我想要匹配以下任何文件:
/foo/bar/baz/x
/foo/bar/baz/y/z
所以我创建一个像这样的正则表达式:
new RegExp('^/foo/bar/baz/.*')
但我的问题是 - 如何告诉RegExp构造函数将.
*
和^
视为正则表达式字符,而不是文字字符?
答案 0 :(得分:1)
由于这是与node.js相关的,我的解决方案是使用quotemeta https://github.com/substack/quotemeta
好像它与perl相关,我的解决方案是使用\ Q \ E; - )
答案 1 :(得分:0)
new RegExp('^/foo/bar/baz/.*')
...和
/^\/foo\/bar\/baz\/.*/
......是等价的。 new RegExp
字符串中的所有内容都被视为正则表达式字符,而不是文字字符(幸运的是/
不需要转义)。
如果你做想要使用构造函数语法创建一个文字字符,请确保使用双反斜杠,因为字符串文字中的\
有其自己的含义。例如,如果要捕获文字.
字符,请执行以下操作:
new RegExp('\.')
...不会正常工作,因为它与'.'
的解释相同,使RegExp与/./
相同。你需要这样做:
new RegExp('\\.')