在JavaScript中生成随机的字母和数字组合字符串?
在JavaScript中生成随机的字母和数字组合字符串?
在JavaScript中,生成随机的字母数字字符串(包括大写字母、小写字母和数字),作为可能唯一的标识符,最短的合理方法是什么?
admin 更改状态以发布 2023年5月24日
如果你只想允许特定的字符,你也可以像这样实现:
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/
另一种方法是使用一个特殊的字符串来告诉函数使用哪些类型的字符。你可以这样做:
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方法来实现:
function randomString(length) { return Math.round((Math.pow(36, length + 1) - Math.random() * Math.pow(36, length))).toString(36).slice(1); }