我正在使用正则表达式搜索一个较大的(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/