首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JavaScript中从正则表达式中获得输出?

问如何在JavaScript中从正则表达式中获得输出?
EN

Stack Overflow用户
提问于 2019-07-20 07:58:02
回答 1查看 139关注 0票数 0

我正在尝试创建一个非常简单的引擎,它将根据令牌生成一些随机数据。

我认为引擎的输入可以是正则表达式,例如

代码语言:javascript
复制
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 

因此,如果我想要一封随机的电子邮件,我会写一个表达式:

代码语言:javascript
复制
  \w@\w.com

例如随机电话号码

代码语言:javascript
复制
\d{3}-\d{3}-\d{4}

我不确定如何处理这个问题,有没有什么JS库可以用来解析正则表达式和重写,以获得我想要的输出?或者我需要编写自己的解析器?

伪代码:

代码语言:javascript
复制
 function getRandom('\d{3}-\d{3}-\d{4}'); 

将会返回

代码语言:javascript
复制
   384-495-3344  or 433-244-3454   etc
EN

回答 1

Stack Overflow用户

发布于 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”类型:

代码语言:javascript
复制
    {
      "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,它可能值得一看。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57120731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档