Javascript replaceAll无法正常工作

Vis*_*hid 15 javascript

可能重复:
在javascript中替换所有出现的字符串?

我需要替换变量中的所有字符串.

<script>
var a="::::::";
a = a.replace(":","hi");
alert(a);
</script>
Run Code Online (Sandbox Code Playgroud)

上面的代码只替换第一个字符串即.hi::::::

我用过replaceAll但不起作用.

请指导我,谢谢

小智 28

replaceAll在JavaScript 中没有:错误控制台可能报告错误.

相反,使用/g("匹配全局")修饰符和正则表达式参数replace:

var a="::::::";
a = a.replace(/:/g,"hi");
alert(a);
Run Code Online (Sandbox Code Playgroud)

它包含在MDN:String.replace(以及其他地方)中.

  • 自这个答案提出以来已经很多年了,replaceAll 现已包含在 MDN 文档和 ECMA-262 (2021) 规范中,但 ReplaceAll 仍未在所有浏览器中广泛使用。Firefox 从版本 77 开始就包含了它。希望这个更新可以帮助人们避免几分钟的困惑。 (75认同)
  • Node JS 不支持replaceAll! (7认同)
  • 从节点15开始,节点支持replaceAll。 (6认同)
  • @VishnuChid 因为`/:)/g` 是一个无效的正则表达式文字(由于“额外的”右括号,它会导致 SyntaxError)。试试 `/:\)/g` 代替。请阅读错误消息并准确描述错误消息 - “不工作”和“不工作”非常含糊。 (3认同)
  • 那是什么?https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll (3认同)
  • @mgPePe 阅读上面的评论。 (2认同)
  • 当测试人员不相信开发人员时显示此答案“这个答案已经很多年了,replaceAll 现已包含在 MDN 文档和 ECMA-262 (2021) 规范中,但 ReplaceAll 仍未在所有浏览器中广泛使用. Firefox 从版本 77 开始就包含了它。希望这次更新可以帮助人们避免几分钟的困惑。” ... (2认同)

Mit*_*ell 11

replaceAllJavaScript中没有任何功能.

你可以使用带有全局标识符的正则表达式,如pst的答案所示:

a.replace(/:/g,"hi");

一些人喜欢的替代方案,因为它消除了对正则表达式的需要,就是使用JavaScript splitjoin函数,如下所示:

a.split(":").join("hi");
Run Code Online (Sandbox Code Playgroud)

值得注意的是,第二种方法更慢.

  • ES2021 中引入 https://2ality.com/2019/12/string-prototype-replaceall.html (3认同)
  • "拆分"解决方案的+1. (2认同)
  • 2021 更新:“String.prototype.replaceAll()”现在是 JS 中的有效函数,但在 Node 中尚不支持。示例: ` let p = '狗吃了我的作业。坏狗。'; p.replaceAll('狗', '山羊'); 控制台.log(p); // '山羊吃了我的作业。坏山羊。` (2认同)