(new RegExp('/videos/(\d+)$')).test('/videos/1')
返回false。为什么呢?
(new RegExp('/videos/(\d+)$')) == /\/videos\/(d+)$/
以/
开头,然后是videos
字符串,然后是/
,然后是d+
,这是1位或更多位数,因此1
应匹配。 ..
答案 0 :(得分:2)
您需要转义\\
:
console.log( (new RegExp('/videos/(\\d+)$')).test('/videos/1') );

答案 1 :(得分:0)
您应该在RegExp构造函数中转义特殊字符:
alert((new RegExp("\\/videos\\/(\\d+)$")).test('/videos/1'))
使用构造函数时,正常的字符串转义规则 (当包含在字符串中时带有\的特殊字符前面) 必要的。
答案 2 :(得分:0)
这有效:
var s = '/videos/1';
s.match(/\/videos\/(\d+)$/);
就像这样:
var regex = new RegExp(/\/videos\/(\d+)$/)
regex.test('/videos/1')
您是否看到了不同的东西?