[英]why javascript regexp doesn't match
(new RegExp('/videos/(\\d+)$')).test('/videos/1')
返回false。 為什么?
(new RegExp('/videos/(\d+)$')) == /\/videos\/(d+)$/
以/
開頭,然后是videos
字符串,然后是/
再次,然后d+
是1位或更多位數,所以1
應匹配...
你需要逃避\\\\
:
console.log( (new RegExp('/videos/(\\\\d+)$')).test('/videos/1') );
您應該在RegExp構造函數中轉義特殊字符:
alert((new RegExp("\\\\/videos\\\\/(\\\\d+)$")).test('/videos/1'))
MDN摘錄 :
使用構造函數時,需要使用普通的字符串轉義規則(前面包含字符串的特殊字符)。
這有效:
var s = '/videos/1';
s.match(/\/videos\/(\d+)$/);
就像這樣:
var regex = new RegExp(/\/videos\/(\d+)$/)
regex.test('/videos/1')
你看到了不同的東西嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.