如何在Javascript中生成随机的字母和数字字符串?

How to generate a random string of letters and numbers in Javascript?

本问题已经有最佳答案,请猛点这里访问。

我一直在使用此代码:

1
2
3
4
5
6
7
8
9
10
11
function stringGen()
{
    var text ="";

    var charset ="abcdefghijklmnopqrstuvwxyz0123456789";

    for( var i=0; i < len; i++ )
        text += charset.charAt(Math.floor(Math.random() * charset.length));

    return text;
}

但到目前为止,它还没有像现在这样运作。我做错什么了?

谢谢你的帮助


您错过了参数len

1
2
3
4
5
6
7
8
9
10
11
12
function stringGen(len) {
  var text ="";
 
  var charset ="abcdefghijklmnopqrstuvwxyz0123456789";
 
  for (var i = 0; i < len; i++)
    text += charset.charAt(Math.floor(Math.random() * charset.length));
 
  return text;
}

console.log(stringGen(3));

这会给你一些类似"a1z"的东西。


一条漂亮的单线图是:

1
Math.random().toString(36).substr(2, length)

或者,如果需要长度超过10/11个字符的str:

1
2
3
4
5
6
function generateRandAlphaNumStr(len) {
  var rdmString ="";
  for( ; rdmString.length < len; rdmString  += Math.random().toString(36).substr(2));
  return  rdmString.substr(0, len);

}


作为替代方案:

1
2
3
4
5
6
7
8
var len = 20,
    str = '';

while( len-- ) {
    str += String.fromCharCode( 48 + ~~(Math.random() * 42) );
}

console.log( str );


len变量未定义。要么将其作为参数传入,要么将其设置为某个值。

1
2
3
4
5
6
7
8
9
10
11
12
function stringGen(len)
{
    var text ="";

    var charset ="abcdefghijklmnopqrstuvwxyz0123456789";

    for( var i=0; i < len; i++ )
        text += charset.charAt(Math.floor(Math.random() * charset.length));

    return text;
}
alert(stringGen(5));

http://jsfiddle.net/rg7z3/