为什么Regexp不匹配?

时间:2012-09-29 08:43:37

标签: javascript jquery

任何人都可以告诉我为什么这个Regexp不匹配?

var matches = ' @test'.match(new RegExp('(\s+|^)(@|!)(.*?)(\s+|$)', 'g'));

而这个匹配:

var matches = '@test'.match(new RegExp('(\s+|^)(@|!)(.*?)(\s+|$)', 'g'));

我已经指定了\s+。为什么它不匹配呢?

1 个答案:

答案 0 :(得分:4)

\s不被识别为空白速记,因为你是从字符串而不是正则表达式文字构造正则表达式,而在字符串中你需要加倍反斜杠。

所以你需要使用

var matches = ' @test'.match(new RegExp('(\\s+|^)([@!])(.*?)(\\s+|$)', 'g'));

var matches = ' @test'.match(/(\s+|^)([@!])(.*?)(\s+|$)/g);