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