javascript - 隐式和显式正则表达式创建会产生不同的执行结果

标签 javascript regex v8

我正在使用正则表达式搜索一个较大的(500kb)文档。我使用的是node.js (v0.10.13),但Chrome (31) DevTools 中的行为是相同的。通过隐式正则表达式创建,我得到了我期望的结果:

>/worker(?:.|\n)+Name:\s+(.+?)\s+Job title/.exec(text)
["worker   John Doe
                                                                 (s):
Name:                         Mrs Jean Smith          Job title", "Mrs Jean Smith"]

如果我显式创建一个正则表达式(我需要这样做,因为表达式可以在运行时更改),那么它会失败:

>new RegExp('worker(?:.|\n)+Name:\s+(.+?)\s+Job title').exec(text)
null

为什么?

最佳答案

当您使用 RegExp 创建正则表达式时,你需要用双反斜杠转义特殊字符,就像这样

new RegExp('worker(?:.|\\n)+Name:\\s+(.+?)\\s+Job title').exec(text)

关于javascript - 隐式和显式正则表达式创建会产生不同的执行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21182142/

相关文章:

javascript - 我如何知道用户滑动的方向?

javascript - 从 JSP 中获取 Java 变量到 Script 标签中

java - 如何在Java文件中找到简单的单词?

javascript - 使用 JavaScript 正则表达式分割字符串但保留分隔符?

python - 使用正则表达式获取匹配字符串的百分比

javascript - v8/chrome/node.js函数内联

javascript - ReactJs 旋转功能不起作用

javascript - isPresent 和 isDisplayed 方法有什么区别

c++ - 参数返回值的 V8 内存管理

javascript - 为什么 Math.pow() (有时)在 JavaScript 中不等于 **?