【问题标题】:What are the best approches for generating random strings from a set of allowed characters?从一组允许的字符生成随机字符串的最佳方法是什么?
【发布时间】:2018-06-07 22:27:40
【问题描述】:

我有一个非常简单的 javascript 程序,它涉及从给定的一组允许的字符生成随机字符串。

使用randexp.js 从正则表达式生成随机字符串似乎是最合适的方法。但是,由于允许的字符集是一个非常简单的字符集(基本上都是英文字母表中的大写字符和所有数字),我想知道加载整个库是否对于这个目的有点矫枉过正。相反,我正在做类似以下的事情:

const chars = ["A", "B", "C", "D", ...];

let random = () => { return chars[Math.floor(Math.random() * chars.length)] };

这是否真的有什么不好的地方(除了有点笨重和笨拙)或者在这种特定情况下可以吗?从一组允许的字符生成随机字符串的最佳方法是什么?

【问题讨论】:

  • 取决于您使用它的目的:Math.random() 不适合任何与安全或机密相关的事物。
  • @zerkms 我应该指出我的程序与安全无关。感谢您的观察!
  • 以防万一有人想查看实际代码以及生成这些字符串的目的,可以访问here

标签: javascript string random


【解决方案1】:

这可以说是randexp.js (GitHub) 的一个很好的用例,这是一个基于正则表达式模式生成随机字符串的 JavaScript 库。它非常强大,可以用于各种事情。

let randexp = new RandExp(/[A-D]{1,5}/);
for(i=0;i<3;i++)
    console.log(randexp .gen());

//random numbers
console.log(new RandExp(/[1-6]/).gen());
//words with optional parts
console.log(new RandExp(/great|good( job)?|excellent/).gen());
//wildcard gen: eg. keys
console.log(new RandExp(/random stuff: .{8,20}/).gen());
&lt;script src="https://github.com/fent/randexp.js/releases/download/v0.4.3/randexp.min.js"&gt;&lt;/script&gt;

通常,通过npm 获取它或下载release version

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2011-01-18
    • 2020-12-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 2016-01-03
    相关资源
    最近更新 更多