javascript - 同一字符串 Javascript 上的多个正则表达式模式

标签 javascript regex string

假设我有一个非常大的字符串 str 并且我需要在 str 上执行多个正则表达式模式,我是否可以在 javascript 中执行此操作,以便总数运行时间仅取决于字符串的长度而不取决于正则表达式模式的数量?

即而不是执行以下操作

var match1 = myRegexp1.exec(str);
var match2 = myRegexp2.exec(str);
var match3 = myRegexp3.exec(str);

有没有办法在字符串上一次执行所有正则表达式模式。

我找到一篇文章http://fulmicoton.com/posts/multiregexp/上面说有 re2为 C++ 而他(写这篇文章的人)为 Java 制作了库。 Javascript 中有这样的 for/in 吗?

最佳答案

我想你需要这样的东西

var rgx = new RegExp([myRegexp1, myRegexp2, myRegexp3].map(function(r){
   return (r+"").replace(/\//g,"");
}).join("|"), "g");
var match = rgx.exec(str);

它的作用是获取正则表达式并删除分隔符,然后用 | 连接它,这样它就变成了多个正则表达式,最后添加了一个全局标志。

关于javascript - 同一字符串 Javascript 上的多个正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27402598/

相关文章:

php - 可变长度正则表达式回顾

c# - 正则表达式在 C# 中匹配,但在 java 中不匹配

regex - Grep 正则表达式以任何顺序查找单词

c# - 修复字符串编码问题

javascript - 转换为 UTC 会在 Javascript 中给出 NaN 错误

javascript - React.js 在一定时间后状态发生变化

c - 编写程序查找并替换单词中的字符

c# - 对象转字符串出错

javascript - 使用javascript获取内存使用信息

javascript - 在线 Javascript 代码评估工具