我正在尝试创建一个非常简单的引擎,它将根据令牌生成一些随机数据。
我认为引擎的输入可以是正则表达式,例如
engine will get [0-9] will yield any random number like 9 9999 0897 000
engine will get \w will yield any random word (even without meaning) like asdd gwasss ttt were khhu encyclopedia 因此,如果我想要一封随机的电子邮件,我会写一个表达式:
\w@\w.com例如随机电话号码
\d{3}-\d{3}-\d{4}我不确定如何处理这个问题,有没有什么JS库可以用来解析正则表达式和重写,以获得我想要的输出?或者我需要编写自己的解析器?
伪代码:
function getRandom('\d{3}-\d{3}-\d{4}'); 将会返回
384-495-3344 or 433-244-3454 etc发布于 2019-07-20 08:17:08
考虑使用输出AST的现有正则表达式解析器。
例如,对于JavaScript:
https://www.npmjs.com/package/regjsparser
https://github.com/jviereck/regjsparser
这里的demo页面可以让您看到生成的AST:
http://www.julianviereck.de/regjsparser/
然后,您可以查看AST中的"type“,在本例中包括"dot”类型:
{
"type": "dot",
"range": [
4,
5
],
"raw": "."
},还请注意,有一个JS库可以从AST生成正则表达式:
https://www.npmjs.com/package/regjsgen
https://github.com/bnjmnt4n/regjsgen
PS:我在这里发布了一个不同问题的类似答案,https://stackoverflow.com/a/57096632/406712,它可能值得一看。
https://stackoverflow.com/questions/57120731
复制相似问题