有人可以告诉我为什么这个Regexp不匹配吗?
var matches = ' @test'.match(new RegExp('(\s+|^)(@|!)(.*?)(\s+|$)', 'g'));
而与此匹配:
var matches = '@test'.match(new RegExp('(\s+|^)(@|!)(.*?)(\s+|$)', 'g'));
我已经指定了
\s+
。那为什么不匹配呢? 最佳答案
\s
不被认为是空格的缩写,因为您是从字符串而不是正则表达式文字构造正则表达式的,并且在字符串内部您需要将反斜杠加倍。
所以你需要使用
var matches = ' @test'.match(new RegExp('(\\s+|^)([@!])(.*?)(\\s+|$)', 'g'));
要么
var matches = ' @test'.match(/(\s+|^)([@!])(.*?)(\s+|$)/g);
关于javascript - Regexp为什么不匹配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12651277/