1
var a = 'toto titi (should be removed) 5'.replace(/\(.*\)|\[.*\]|[^a-zA-Z0-9 ]|tata|tutu|tyty/gi, '!$!');
var b = 'toto titi (should be removed) 5'.replace(new RegExp('\(.*\)|\[.*\]|[^a-zA-Z0-9 ]|tata|tutu|tyty', 'gi'), '!$!');
console.log(a);
console.log(b);
我想通過空間的每個字符是不是數字或字母或一個空格和字符這是beetween更換差異( )和[]。 我有兩個相同的句子,我使用相同的模式。唯一的區別是我對var a
使用/regex/flags
語法,對於var b
使用對象語法new Regex('regex','flags')
。的JavaScript beetween新的正則表達式(「正則表達式」,「旗」)和/正則表達式/標誌
然而結果與a和b不一樣。
輸出是:
toto titi !$! 5 //a (it's the expected result)
!$!!$! //b
我不明白爲什麼。你能解釋我嗎? 我必須使用對象語法,因爲我需要用變量構建正則表達式。
使用Regexp構造函數時,您需要雙重轉義。 – hwnd