我试图找到字符串中的所有“+”字符并将其替换为空格(“”)。代码在 Chrome/Firefox 中运行良好,但在 IE 中中断。我需要什么修改才能让它在 IE 中工作?
str = str.replace(new RegExp(/\+/, 'g'), ' ');
Run Code Online (Sandbox Code Playgroud)
错误:类型错误:正则表达式中的语法错误
现在支持 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")RegExp。RegExp而是从参数创建一个新的。
这将在 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)。如果您打算在模式中使用变量,那么您将需要构造函数符号(不要忘记在那里使用双反斜杠)。
| 归档时间: |
|
| 查看次数: |
5737 次 |
| 最近记录: |