假设我有一个非常大的字符串 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/