IE 11中的正则表达式抛出错误

时间:2016-10-06 10:53:24

标签: javascript regex

我想找到所有的' +'字符串中的字符并用空格替换('')。代码在Chrome / Firefox中运行良好但在IE中中断。在IE中使用它需要进行哪些修改?

str = str.replace(new RegExp(/\+/, 'g'), ' ');

错误: TypeError:正则表达式中的语法错误

1 个答案:

答案 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)。如果您打算在模式中使用变量,那么您将需要构造函数表示法(不要忘记在那里加倍反斜杠)。