我想找到所有的' +'字符串中的字符并用空格替换('')。代码在Chrome / Firefox中运行良好但在IE中中断。在IE中使用它需要进行哪些修改?
str = str.replace(new RegExp(/\+/, 'g'), ' ');
错误: TypeError:正则表达式中的语法错误
答案 0 :(得分:4)
现在支持ECMAScript 6的Chrome / Firfox支持RegExp构造函数中的正则表达式文字。 IE - 截至目前 - 仍然不支持。
请参阅MDN reference:
从ECMAScript 6开始,
new RegExp(/ab+c/, 'i')
在第一个参数为"can't supply flags when constructing one RegExp from another"
且第二个flags参数存在时不再抛出TypeError(RegExp
)。而是创建参数中的新RegExp
。
这适用于Chrome:
console.log("1+2".replace(new RegExp(/\+/, 'g'), ' '));
在IE中,使用正则表达式文字或RegExp构造函数中的字符串更安全:
console.log("1+2".replace(new RegExp("\\+", 'g'), ' '));
console.log("1+2".replace(/\+/g, ' '));
对于此静态模式,请考虑使用正则表达式文字表示法(/\+/g
)。如果您打算在模式中使用变量,那么您将需要构造函数表示法(不要忘记在那里加倍反斜杠)。