{"_id":"string-random","_rev":"10-453f396717cbe1e04e494eaffbe96b35","name":"string-random","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"string-random","version":"0.1.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"string-random@0.1.0","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"homepage":"https://github.com/maichong/string-random#readme","bugs":{"url":"https://github.com/maichong/string-random/issues"},"dist":{"shasum":"1da0ec5aa76e7c5ac5e47b20b1b8ac87f9398a53","tarball":"https://registry.npmjs.org/string-random/-/string-random-0.1.0.tgz","integrity":"sha512-b4BwxBa70MigHz19sSqM8W2JaSsaRaOiQdbb8gTDfRkikDpj3IBR11CBjv2c+rxr7JWGgJ2qBx5EjwFOoaQYmg==","signatures":[{"sig":"MEYCIQD+3h3eZEpM3o6aSttYnAJEqqhnVRWHUI5IDc1OSkWkOAIhAKV+tFyRbpJ4DyAEjVhIg/v7W2wJSw/yT4rKYWetHddR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"1da0ec5aa76e7c5ac5e47b20b1b8ac87f9398a53","gitHead":"0a8ab6816ddc531343af1279b066b0f769cd4db0","scripts":{"test":"mocha test"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"git+https://github.com/maichong/string-random.git","type":"git"},"_npmVersion":"3.3.12","description":"Generate random string","directories":{"test":"test"},"_nodeVersion":"5.2.0"},"0.1.1":{"name":"string-random","version":"0.1.1","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"string-random@0.1.1","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"homepage":"https://github.com/maichong/string-random#readme","bugs":{"url":"https://github.com/maichong/string-random/issues"},"dist":{"shasum":"69e370af1a999082300130b059690eda354fd2bc","tarball":"https://registry.npmjs.org/string-random/-/string-random-0.1.1.tgz","fileCount":6,"integrity":"sha512-5sA45ZlHH88xw3Euj5+1th/HY/UPbyLYJL1v+WwpnfwFUT78O9hvFOs5yCOR6AYbDv+9fZfyDnprT2JFOt6iJQ==","signatures":[{"sig":"MEQCIDbl2Nmyrfi1/vhknv7hGZ5jKAqNl1NsPTe/qpWfTjxIAiBY2CBZZpBMw08sMa2nIvDxIYtKIQLI2n4CGWINPCyIoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8190,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzXkvCRA9TVsSAnZWagAAZhQP/1f69vSMvElPYloRMXEu\nxu8LEiBlqQxrbAPSzPqsVZZvUfOE1bBYaHMMgvZK0ndqnSv7n20NCTyjqpjL\nkYzB7uRAwjSDtxwcKn6Xk2PypLetLFE/BYp8EL/xm+UdjYFC3CbE58a8a+mm\nkao+wRK6mOIpmCgX7vS0kncVplPo1pHoObUeNBiY4kucQppdp2QYaCRt2ysl\nEP4XORuaDfJbi8zx920UWEuJrqnP7UBDrakgDpw/wgHPHteN3N1/F0MJmX/q\nDiOaVi/CovxkzpJq+cl1fZdirC6rr+NtV8h+60+RJoFOUwnt+Q0bcfHgFNuA\n/c8WRS3DX1dA7CEDf0KbZyFdKGw9NBQD/Qadst5YfcNmHReFdHVaAWaTMEAn\n6FoeF0dDqrhQLkNPoFRr12kqWlqC8H9P6YRedVtxLt4UAop/ouEigEJoS3p7\nwTRYAgkQHmgnOzAtKv8QTd6qjzIARnK3eM4P8+mrfeKWR0yM2Sc+NC1zjVMi\n/soHdX2MWqUhjMehElkl6ufYp5Z6/EqWvjukSvi+9vKyIhIVoO8IeuX8UpPA\nMJl067aOUCuVD4/rXEpQCZWtm+q0/5BtXWfjzBLRwGcvmBXNIyBnkSBgUqt8\ndlG+XHC60aDqjo3mxl9die2s416fONpURHKe0iKFuld9qfAg5YeN6mELqnAr\ndOCU\r\n=HW4f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","gitHead":"c7a40ecdeb8cd7dc27da9f7e73829b7a3ed2da47","scripts":{"test":"mocha test"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"git+https://github.com/maichong/string-random.git","type":"git"},"_npmVersion":"5.6.0","description":"Generate random string","directories":{"test":"test"},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"mocha":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/string-random_0.1.1_1540192558484_0.6116348056708745","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"string-random","version":"0.1.2","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"string-random@0.1.2","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"homepage":"https://github.com/maichong/string-random#readme","bugs":{"url":"https://github.com/maichong/string-random/issues"},"dist":{"shasum":"4e27f676057df68aaba7dbad54e0707ff60b1ff2","tarball":"https://registry.npmjs.org/string-random/-/string-random-0.1.2.tgz","fileCount":11,"integrity":"sha512-L3Iufo5aHgGQGynmKseb02dJYjZGNLDMd8qvYaZWEknpxwEefGU9eHaSvh221JScMzqQz+KC4/bGBlZdIsJTZw==","signatures":[{"sig":"MEUCIQDXjYITuZuiZUgClZ9ySvdTiqqbR+AWqWamiGXjLBD0ugIgf7X/Nj9E180vDwFHSWTG//mwoLnp2TGEuMkdY8Bl6BQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5XTmCRA9TVsSAnZWagAAN5wP/iXLnEYiUaysi62C67xC\nXNb/cedtHWOxefwjqomZKEBP7RgRHIb1BcFKzI7RpQH93TwbRTefCORDYNp/\nUiExQJ/1785PGID6vVMKQj3qiJcxzgoBmn6WVFmVTtGVSqqbZGJMV93cqhHC\nDN9V55ZKfs5U/WSwAUQJKQ4eZLWxd5kciEpB/jBiNK06dhu7rlS6WYCyf8vs\nT/v7sfEzG75GWfd9LyrdCZq4Fwo88JrqzWO13RNi6McFhw9TE1dbdVrvpD3T\n/t3Wj691XEeqTpPdBfy3WSimngQUQj1BuL9z5xQ1KpI37wgSL7RFuNL+mlE4\nPEQ6b2ZjRcwHQknL1Mw8RgvlHmqAp8AL5+iYO1EyKQ+4zL479uGXcP3XmnEr\nAg9BP+E6nJpoNJdvdXxPmkbrscMnGfOZAmHO4uGR2E6fsswbU1jrtPmwRUcL\nxnavreZi6K+wpRcdlWCgqBlinZHSh2TuYZZQ3k22QAzYRbuRH/sDDQ5LAJXF\nZWZng2aDKre4ZZyh1ahQdxt4h8/ERsaTgpaEsV8KBTZE5RK8FzaDeWdi3BBx\nX5J2KbYv86QSnCtFs8vQYYa3E+iE52hCV2gGXxIpJSvZ8apMNFnvQDIttkxd\n7RUolMFE/5C4hrZ9KVg97v9TSVOoSPnVJ3r85JRdMhiYK1UssObrQgRxliXM\nKI2l\r\n=D2EC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","gitHead":"73552c9559950284744a436cf4a56a852b1a7e1b","scripts":{"test":"mocha test"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"git+https://github.com/maichong/string-random.git","type":"git"},"_npmVersion":"5.6.0","description":"Generate random string","directories":{"test":"test"},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"mocha":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/string-random_0.1.2_1541764325898_0.38422790841672017","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"string-random","version":"0.1.3","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@maichong.it"},"license":"MIT","_id":"string-random@0.1.3","maintainers":[{"name":"liangxingchen","email":"liang@maichong.it"}],"homepage":"https://github.com/maichong/string-random#readme","bugs":{"url":"https://github.com/maichong/string-random/issues"},"dist":{"shasum":"083f39835c2430fe0be76b9e72f0736e2e0f7b74","tarball":"https://registry.npmjs.org/string-random/-/string-random-0.1.3.tgz","fileCount":6,"integrity":"sha512-g+UsIwzKhNi+9/+Q3Q7hP8R4HkQxiIkQlttnxw6GRdk9pnnkGIv53C6H8dvh8wxAVDhkqpnWeauaPXS1b2sBJg==","signatures":[{"sig":"MEUCIQD0cExIFHyZslVlBhPPk9SNks1EJ7KU0ZrPQU/pPa20ZQIgfWru7tyTC5rwUuGdn/QBdJ4s4wGHGMTTMHRXKiBZX7U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8kj2CRA9TVsSAnZWagAAN2wP/0iLvqFAdGD/D1vkI21V\nL11z0DDxKBUURu+YSV9qV2WVeatsR2PlH/BxUteC2ePpvpO5vWzW/79yOfHg\nnrWujSpSdzDGj70ph0MBUJ/s0nfZHcaLxLPvattxZGnHs9n00Ajm/9POuOei\npnDOf1xyx9/slXMsjp7ZHWUJmoVuAvcLaCdJFxnw0rbVDPcmqGL1ENyxrMaN\nsVV0Qro81Ql6Wfmv501QfwXAGG8WGGjsOY/dOfKcNa4XSQzHYAtvJSBILtod\nb/D6dxa4+FZDK/DnfnDAKIn8OFrq9y0HTVyqyfZt2qOwwwL6T2qkwTKoI5Jm\ncb0p7MB0E28d2dl6RxcWn2PbgWgSoM/uNOPUX7D9b5Vgzj3mXCGS4hsh0vLo\nYWsm4WuXiZrB9K20eR0gYmde39gUdDLAu7pBaiOaOAws1mNnM68ZqSDBtB0W\nknZ3wClQBnoUCH409Kn1wXoOwAt0u/GqycETTjI2S0jKmoWCBkn7tPztVI1P\nK/oXZi6BAMhuAXvaVwoEAYMSmKtXxhF0/GOfR8IR669tBRVLg7U0FK7Vk0yb\nY2rZLMwoRZqmePTtBODOJ7KryC7TQxjPKulLQ8nddGJEm4C+bcKFKaVcoady\n/tB/Gy3ySxvZafnInmJOvsH4wEHqA2DManeA23XqurCC+TY0HOLLLikf9tAH\nfg40\r\n=ec8W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","gitHead":"6bb18d9c015fb5861a52ce5b1859ae754f48f624","scripts":{"test":"mocha test"},"_npmUser":{"name":"liangxingchen","email":"liang@maichong.it"},"repository":{"url":"git+https://github.com/maichong/string-random.git","type":"git"},"_npmVersion":"5.6.0","description":"Generate random string","directories":{"test":"test"},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"mocha":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/string-random_0.1.3_1542605046116_0.8116325311109998","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"string-random","version":"0.2.0","author":{"url":"https://github.com/liangxingchen","name":"Liang","email":"liang@miaomo.cn"},"license":"MIT","_id":"string-random@0.2.0","maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cn"}],"homepage":"https://github.com/liangxingchen/string-random#readme","bugs":{"url":"https://github.com/liangxingchen/string-random/issues"},"dist":{"shasum":"a65852dfa939b71c7c6dbbf17ac82e7687051e6a","tarball":"https://registry.npmjs.org/string-random/-/string-random-0.2.0.tgz","fileCount":5,"integrity":"sha512-4jxkPy6ZRLbrq6kEVEtquQG/oqJLzP+8Mvj4GqB/CGqUl20a+a+2yw3AAAliA9Q5qy/RaZVAAypHZyht35W6jw==","signatures":[{"sig":"MEQCIDqHxbHukRE7X9tLSm1qnb/U2xof4+iLpjCs33hbBWw1AiBCk2U6tyxP9SN521FRrnJgG7GPMaxh84OcFNOc+SdHfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20806},"main":"index.js","types":"index.d.ts","gitHead":"1d1adf06fe6740b8aecfe82ac9fd6937e5486e0d","scripts":{"test":"mocha test"},"_npmUser":{"name":"liangxingchen","email":"liang@miaomo.cn"},"repository":{"url":"git+https://github.com/liangxingchen/string-random.git","type":"git"},"_npmVersion":"10.9.0","description":"Generate random string","directories":{"test":"test"},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"mocha":"^5.2.0","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/string-random_0.2.0_1768141103135_0.49962929998121886","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"string-random","version":"1.0.0","description":"Generate random string","main":"index.js","types":"index.d.ts","directories":{"test":"test"},"scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/liangxingchen/string-random.git"},"author":{"name":"Liang","email":"liang@miaomo.cn","url":"https://github.com/liangxingchen"},"license":"MIT","bugs":{"url":"https://github.com/liangxingchen/string-random/issues"},"homepage":"https://github.com/liangxingchen/string-random#readme","devDependencies":{"mocha":"^5.2.0","typescript":"^5.9.3"},"_id":"string-random@1.0.0","gitHead":"98706ac322560bcf55bfa6e0d1bb7a835a03590c","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-LDgy8PDqsWJasulM3UYKWJQjamjHc3MPjrRpBm3SfoQdTFL5FPRA7KZ0A10hIhqCmtgPx7AxWrAX94Q7ipQIWg==","shasum":"a166b475b11ad3f3866f853ebccbb02362f1eb94","tarball":"https://registry.npmjs.org/string-random/-/string-random-1.0.0.tgz","fileCount":5,"unpackedSize":16576,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDL4FKQghSCAqtpZF6K142QEHU9uYxhCLGerP+CVxCsdAIgR3W77Xictn4bc9LdxJ5y1luU2z47tobdEprlWM4bN/I="}]},"_npmUser":{"name":"liangxingchen","email":"liang@miaomo.cn"},"maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cn"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/string-random_1.0.0_1768628693736_0.7455905933338312"},"_hasShrinkwrap":false}},"time":{"created":"2016-01-20T07:42:01.993Z","modified":"2026-01-17T05:44:53.971Z","0.1.0":"2016-01-20T07:42:01.993Z","0.1.1":"2018-10-22T07:15:58.694Z","0.1.2":"2018-11-09T11:52:06.039Z","0.1.3":"2018-11-19T05:24:06.278Z","0.2.0":"2026-01-11T14:18:23.272Z","1.0.0":"2026-01-17T05:44:53.873Z"},"bugs":{"url":"https://github.com/liangxingchen/string-random/issues"},"author":{"name":"Liang","email":"liang@miaomo.cn","url":"https://github.com/liangxingchen"},"license":"MIT","homepage":"https://github.com/liangxingchen/string-random#readme","repository":{"type":"git","url":"git+https://github.com/liangxingchen/string-random.git"},"description":"Generate random string","maintainers":[{"name":"liangxingchen","email":"liang@miaomo.cn"}],"readme":"# string-random\n\n[![npm](https://img.shields.io/npm/v/string-random.svg)](https://www.npmjs.com/package/string-random)\n[![License](https://img.shields.io/npm/l/string-random.svg)](LICENSE)\n\n一个轻量级的随机字符串生成库，支持自定义字符集和字符类型控制。纯 JavaScript 实现，零依赖。\n\n## 特性\n\n- ✅ 极简设计，API 简洁易用\n- ✅ 支持自定义字符集（数字、字母、特殊字符）\n- ✅ 支持快速生成指定长度的随机字符串\n- ✅ 完整的 TypeScript 类型定义\n- ✅ 零依赖，体积极小\n- ✅ 同时支持 CommonJS 和 ES6 模块\n- ✅ 基于加密安全的随机数生成器 `crypto.getRandomValues()`\n\n## 安装\n\n```bash\nnpm install string-random\n# 或\nyarn add string-random\n# 或\npnpm add string-random\n```\n\n## 快速开始\n\n```javascript\n// CommonJS\nconst stringRandom = require(\"string-random\");\n\n// ES6\nimport stringRandom from \"string-random\";\n\n// 基础用法\nconsole.log(stringRandom()); // \"aB3cD7xY\" (默认长度 8)\nconsole.log(stringRandom(16)); // \"aB3cD7xY9L2mN4oP\"\n```\n\n## API 文档\n\n### stringRandom(length?, options?)\n\n生成指定长度的随机字符串。\n\n**参数：**\n\n| 参数      | 类型                            | 默认值 | 描述                           |\n| --------- | ------------------------------- | ------ | ------------------------------ |\n| `length`  | `number`                        | `8`    | 随机字符串的长度，最大支持4096 |\n| `options` | `Options` \\| `string` \\| `true` | `{}`   | 配置选项（详见下方）           |\n\n**返回值：** `string` - 生成的随机字符串\n\n---\n\n### Options 接口\n\n控制随机字符串生成的字符集选项。\n\n| 属性       | 类型                  | 默认值  | 描述                                 |\n| ---------- | --------------------- | ------- | ------------------------------------ |\n| `numbers`  | `string` \\| `boolean` | `true`  | 是否包含数字，或自定义数字字符集     |\n| `letters`  | `string` \\| `boolean` | `true`  | 是否包含字母，或自定义字母字符集     |\n| `specials` | `string` \\| `boolean` | `false` | 是否包含特殊字符，或自定义特殊字符集 |\n\n**默认字符集：**\n\n- `numbers`: `\"0123456789\"`\n- `letters`: `\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\"`\n- `specials`: `\"~!@#$%^*()_+-=[]{}|;:,./<>?\"`\n\n---\n\n## 使用示例\n\n### 基础用法\n\n```javascript\nconst stringRandom = require(\"string-random\");\n\n// 默认长度 8，包含数字和字母\nconsole.log(stringRandom()); // \"aB3cD7xY\"\n\n// 指定长度\nconsole.log(stringRandom(16)); // \"aB3cD7xY9L2mN4oP\"\n```\n\n### 使用 Options 对象\n\n```javascript\nconst stringRandom = require(\"string-random\");\n\n// 仅字母（不包含数字）\nconsole.log(stringRandom(16, { numbers: false }));\n// \"aBcDeFgHiJkLmNoP\"\n\n// 仅数字（不包含字母）\nconsole.log(stringRandom(16, { letters: false }));\n// \"1234567890123456\"\n\n// 包含特殊字符\nconsole.log(stringRandom(16, { specials: true }));\n// \"aB3!cD7@xY9#L2$\"\n```\n\n### 自定义字符集\n\n```javascript\nconst stringRandom = require(\"string-random\");\n\n// 自定义字母（仅大写）\nconsole.log(stringRandom(16, { letters: \"ABCDEFG\" }));\n// \"A3B7C2D9E1F4G8H\"\n\n// 自定义数字（仅偶数）\nconsole.log(stringRandom(16, { numbers: \"02468\" }));\n// \"a0B2X4d6e8F0a2B\"\n\n// 自定义特殊字符\nconsole.log(stringRandom(16, { specials: \"!@#$%\" }));\n// \"aB3!cD7@xY9#$L2\"\n\n// 组合自定义\nconsole.log(\n  stringRandom(20, {\n    numbers: false,\n    letters: \"abcdefgh\",\n    specials: \"!@#$%\",\n  }),\n);\n// \"a!b@c#d$e%f!g@h#$\"\n```\n\n### 快捷方式\n\n```javascript\nconst stringRandom = require(\"string-random\");\n\n// options=true 等同于 {specials: true}\nconsole.log(stringRandom(16, true));\n// \"aB3!cD7@xY9#L2$mN4%\"\n```\n\n### 使用自定义字符集字符串\n\n```javascript\nconst stringRandom = require(\"string-random\");\n\n// 直接使用自定义字符集字符串\nconsole.log(stringRandom(10, \"ABCDEFG0123456789\"));\n// \"A3B7C2D9E1\"\n\n// 仅数字\nconsole.log(stringRandom(10, \"0123456789\"));\n// \"1234567890\"\n\n// 仅十六进制字符\nconsole.log(stringRandom(32, \"0123456789abcdef\"));\n// \"a3b7c2d9e1f4a8b7c6d5e4f3a2b1c\"\n```\n\n### 特殊场景\n\n```javascript\nconst stringRandom = require(\"string-random\");\n\n// 仅特殊字符\nconsole.log(\n  stringRandom(10, {\n    specials: true,\n    numbers: false,\n    letters: false,\n  }),\n);\n// \"!@#$%^&*()_\"\n\n// 自定义仅特殊字符\nconsole.log(\n  stringRandom(10, {\n    specials: \":;,\",\n    numbers: false,\n    letters: false,\n  }),\n);\n// \":;:;:;:;:;\"\n\n// 生成 ID 风格字符串（字母 + 数字）\nconsole.log(stringRandom(12, { specials: false }));\n// \"aB3cD7xY9L2m\"\n\n// 生成测试数据风格字符串（纯字母）\nconsole.log(stringRandom(20, { numbers: false, specials: false }));\n// \"aBcDeFgHiJkLmNoPqRsT\"\n```\n\n## 安全性\n\n本库使用**加密安全的随机数生成器**：\n\n**适用于大多数场景：**\n\n- ✅ 生成测试数据\n- ✅ 生成随机文件名\n- ✅ 生成临时标识符\n- ✅ 生成演示用的随机字符串\n- ✅ UI 占位符数据\n- ✅ 随机示例文本\n- ✅ 生成短信验证码\n- ✅ 生成简单的会话 ID\n- ✅ 生成 API 令牌\n- ✅ 生成用户密码\n- ✅ 生成加密密钥\n\n## 兼容性\n\n本库使用 `crypto.getRandomValues()` 生成随机数，该方法的支持情况为：\n\n- **浏览器**：所有现代浏览器支持\n- **Node.js**：v15+\n- **极旧环境或特殊环境**：IE浏览器/小程序环境，请自行添加polyfill\n\n## 常见问题\n\n### Q: 如何生成纯字母字符串？\n\n```javascript\nstringRandom(16, { numbers: false, specials: false });\n```\n\n### Q: 如何生成仅数字字符串？\n\n```javascript\nstringRandom(16, { letters: false, specials: false });\n```\n\n### Q: 如何生成十六进制字符串？\n\n```javascript\nstringRandom(32, \"0123456789abcdef\");\n// 或\nstringRandom(32, \"0123456789ABCDEF\");\n```\n\n### Q: options 参数传 `true` 是什么意思？\n\n`options = true` 等同于 `{ specials: true }`，即包含所有字符集（数字、字母、特殊字符）。\n\n```javascript\nstringRandom(16, true); // 等同于 stringRandom(16, { specials: true })\n```\n\n### Q: 可以同时使用自定义字符集字符串和 Options 对象吗？\n\n不可以。当 `options` 参数是字符串时，直接使用该字符串作为字符集，忽略 Options 对象的配置。\n\n```javascript\n// 正确：使用 Options 对象\nstringRandom(16, { letters: \"ABC\", numbers: \"123\" });\n\n// 正确：使用自定义字符串\nstringRandom(16, \"ABC123\");\n\n// 错误：混合使用\nstringRandom(16, { letters: \"ABC\" }, \"123\"); // 第三个参数会被忽略\n```\n\n## 许可证\n\nMIT License - 详见 [LICENSE](LICENSE) 文件\n\n## 作者\n\n- [Liang Xingchen](https://github.com/liangxingchen)\n","readmeFilename":"README.md"}