隐式和显式正则表达式创建会产生不同的exec结果

时间:2014-01-17 09:24:14

标签: 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"]

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

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

为什么?

1 个答案:

答案 0 :(得分:3)

使用RegExp创建RegEx时,需要使用双反斜杠转义特殊字符,如下所示

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