随机串行生成正则表达式分隔符

时间:2016-06-07 08:08:01

标签: javascript

此代码的输出用正则表达式< - > 用连字符( - )分隔每个4位数字,但如果我替换 \ w 到其他正则表达式。那是为什么?

这个完美无缺。

&#13;
&#13;
function gen(length, separator) {
  var license = new Array(length + 1).join((Math.random().toString(36) + '00000000000000000').slice(2, 18)).slice(0, length);
  return license.toUpperCase().replace(/(\w{4})/g, '$1' + separator).substr(0, length + Math.round(length/4)-1);
}
document.write(gen(16, '-'));
&#13;
&#13;
&#13;

这个不是每个4位数的连字符分隔。

&#13;
&#13;
function gen(length, separator) {
  var license = new Array(length + 1).join((Math.random().toString(36) + '00000000000000000').slice(2, 18)).slice(0, length);
  return license.toUpperCase().replace(/([A-Z]{4})/g, '$1' + separator).substr(0, length + Math.round(length/4)-1);
}
document.write(gen(16, '-'));
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

我认为你需要这样的东西:

function gen(length, separator) {
  var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var text = '';
  for( var i=0; i < length; i++ ) {
      text += possible.charAt(Math.floor(Math.random() * possible.length));
      if(i%4 == 3 && i<length-1) text += separator;
  }

  return text;
}
document.write(gen(16, '-'));