为什么javascript regexp不匹配

时间:2015-03-26 21:42:50

标签: javascript regex

(new RegExp('/videos/(\d+)$')).test('/videos/1')返回false。为什么呢?

(new RegExp('/videos/(\d+)$')) == /\/videos\/(d+)$/

/开头,然后是videos字符串,然后是/,然后是d+,这是1位或更多位数,因此1应匹配。 ..

3 个答案:

答案 0 :(得分:2)

您需要转义\\



console.log( (new RegExp('/videos/(\\d+)$')).test('/videos/1') );




答案 1 :(得分:0)

您应该在RegExp构造函数中转义特殊字符:

alert((new RegExp("\\/videos\\/(\\d+)$")).test('/videos/1'))

MDN excerpt

  

使用构造函数时,正常的字符串转义规则   (当包含在字符串中时带有\的特殊字符前面)   必要的。

答案 2 :(得分:0)

这有效:

var s = '/videos/1';
s.match(/\/videos\/(\d+)$/);

就像这样:

var regex = new RegExp(/\/videos\/(\d+)$/)
regex.test('/videos/1')

您是否看到了不同的东西?