我正在搜索带有正则表达式的大型(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
为什么?
答案 0 :(得分:3)
使用RegExp
创建RegEx时,需要使用双反斜杠转义特殊字符,如下所示
new RegExp('worker(?:.|\\n)+Name:\\s+(.+?)\\s+Job title').exec(text)