var str = "^" + "/post/\d+" + "$";
var regex = new RegExp(str);
var flag = regex.test("/post/3333");
console.log(flag) // -> false
console.log(regex) // -> /^\/post\/d+$/
我期待結果成真,但會導致錯誤。我需要JavaScript代碼中的正則表達式的幫助
我認爲問題是「/」在創建RegExp實例時在「/」之前自動添加。
我應該怎麼寫才能使它工作?
當使用'RegExp'構造函數,你需要躲避反斜線的兩倍。一次爲字符串,然後爲正則表達式。使用'「^」+「/ post/\\ d +」' – Tushar
您打印出'regex'的值 - 良好的調試技巧!一旦你這樣做了,問題就是盯着你。你會看到它說'/^\/post \/d + $ /'。請注意,斜槓已被轉換爲'\ /',但是'd'沒有前面的反斜槓!所以它只會匹配一個實際的'd'!這對你開始瞭解正在發生的事情來說是一個很好的線索。 – 2016-01-24 07:38:10