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

Bis*_*asu 2 javascript regex

我试图找到字符串中的所有“+”字符并将其替换为空格(“”)。代码在 Chrome/Firefox 中运行良好,但在 IE 中中断。我需要什么修改才能让它在 IE 中工作?

str = str.replace(new RegExp(/\+/, 'g'), ' ');
Run Code Online (Sandbox Code Playgroud)

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

Wik*_*żew 5

现在支持 ECMAScript 6 的 Chrome/Firfox 在 RegExp 构造函数中支持正则表达式文字。IE - 截至目前 - 仍然不支持。

请参阅MDN 参考

从 ECMAScript 6 开始,当第一个参数是 a并且第二个 flags 参数存在时,new RegExp(/ab+c/, 'i')不再抛出 TypeError ( "can't supply flags when constructing one RegExp from another") RegExpRegExp而是从参数创建一个新的。

这将在 Chrome 中工作:

console.log("1+2".replace(new RegExp(/\+/, 'g'), ' '));
Run Code Online (Sandbox Code Playgroud)

在 IE 中,在 RegExp 构造函数中使用正则表达式文字或字符串更安全:

console.log("1+2".replace(new RegExp("\\+", 'g'), ' '));
console.log("1+2".replace(/\+/g, ' '));
Run Code Online (Sandbox Code Playgroud)

对于此静态模式,请考虑使用正则表达式文字符号 ( /\+/g)。如果您打算在模式中使用变量,那么您将需要构造函数符号(不要忘记在那里使用双反斜杠)。