首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript中的随机字母数字字符串?

JavaScript中的随机字母数字字符串?
EN

Stack Overflow用户
提问于 2012-05-24 03:54:32
回答 16查看 294.9K关注 0票数 249

在JavaScript中生成随机字母数字(大写、小写和数字)字符串用作可能唯一的标识符的最短方法(在合理范围内)是什么?

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2012-05-24 04:13:58

如果你只想允许特定的字符,你也可以这样做:

代码语言:javascript
复制
function randomString(length, chars) {
    var result = '';
    for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
    return result;
}
var rString = randomString(32, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');

这是一个要演示的jsfiddle:http://jsfiddle.net/wSQBx/

另一种方法是使用一个特殊的字符串来告诉函数要使用什么类型的字符。你可以这样做:

代码语言:javascript
复制
function randomString(length, chars) {
    var mask = '';
    if (chars.indexOf('a') > -1) mask += 'abcdefghijklmnopqrstuvwxyz';
    if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    if (chars.indexOf('#') > -1) mask += '0123456789';
    if (chars.indexOf('!') > -1) mask += '~`!@#$%^&*()_+-={}[]:";\'<>?,./|\\';
    var result = '';
    for (var i = length; i > 0; --i) result += mask[Math.floor(Math.random() * mask.length)];
    return result;
}

console.log(randomString(16, 'aA'));
console.log(randomString(32, '#aA'));
console.log(randomString(64, '#A!'));

小提琴:http://jsfiddle.net/wSQBx/2/

或者,要使用如下所述的base36方法,您可以执行如下操作:

代码语言:javascript
复制
function randomString(length) {
    return Math.round((Math.pow(36, length + 1) - Math.random() * Math.pow(36, length))).toString(36).slice(1);
}
票数 334
EN

Stack Overflow用户

发布于 2015-06-19 04:49:19

JAR.JAR.beans建议的另一种答案变体

代码语言:javascript
复制
(Math.random()*1e32).toString(36)

通过更改乘法器1e32,您可以更改随机字符串的长度。

票数 36
EN

Stack Overflow用户

发布于 2017-06-19 12:33:11

更新:一行解决方案,随机20个字符(字母数字小写):

代码语言:javascript
复制
Array.from(Array(20), () => Math.floor(Math.random() * 36).toString(36)).join('');

或者用lodash缩短:

代码语言:javascript
复制
_.times(20, () => _.random(35).toString(36)).join('');
票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10726909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档