/regex/flags
我想用空格替换每个不是数字或字母或空格的字符以及beetween()和[]之间的字符。
我有两个相同的句子,我使用相同的模式。唯一的区别是我使用var a
的{{1}}语法和new Regex('regex','flags')
的对象语法var b
。
然而,a和b的结果并不相同。
输出是:
toto titi !$! 5 //a (it's the expected result)
!$!!$! //b
我不明白为什么。你能解释一下吗? 我必须使用对象语法,因为我需要使用变量构建我的正则表达式。
答案 0 :(得分:4)
在字符串中,反斜杠(\
)用于转义特殊字符,例如\\
,\'
,\"
。在正则表达式中,反斜杠也用于转义,例如文字\(
或\.
。
这意味着在从字符串创建正则表达式时,您还需要转义字符串中的反斜杠。所以你会这样做:
new RegExp('\\(.*\\)|\\[.*\\]|[^a-zA-Z0-9 ]|tata|tutu|tyty', 'gi')
使用它可以得到预期的结果。