JavaScript中的.replace无法替换所有出现的内容

29

旧的答案,今天你可能想要使用replaceAll - papo
3个回答

39

摘自文档

 

要执行全局搜索和替换,请在正则表达式中包含g开关,或者如果第一个参数是字符串,则在flags参数中包含g。 注意: 在v8 Core(Chrome和Node.js)中,flags参数不起作用,并将从Firefox中删除。

所以应该是:

"11.111.11".replace(/\./g, '');

在编辑的那一刻,这个版本在Firefox中是起作用的...


"11.111.11".replace('.', '', 'g');

... 但是,正如在MDN页面上指出的那样,它的支持很快将被停止。


8
你的第一个例子中的“flags”参数是非标准的,在Chrome或IE中不起作用。 - Jerod Venema
@jvenema 谢谢,我更新了答案并提到了这一点。实际上,当需要进行全局替换时,我从未在 .replace 的第一个参数中使用字符串,所以当看到仍然可以在没有正则表达式修饰符的情况下进行替换时,有些惊讶。 - raina77ow
谢谢,这个可行... 这是我职业生涯中见过的最不经意的代码 :D - SeToY
1
它刚刚救了我的一天...我一直在想到底发生了什么事...谢谢! - beluga
Firefox的行为就像你已经将/./g作为第一个参数传递并替换了所有实例。 - Tanveer Badar

9
使用正则表达式和标志 g,您可以获得预期结果。
"11.111.11".replace(/\./g, "")

使用正则表达式非常重要,因为它的好处如下:

"11.111.11".replace('.', '', 'g'); // dont' use it!!

不是标准

(该方法并非标准)

4

首先,replace()是JavaScript函数,不是jquery函数。

上面的代码仅替换第一个“。”(而不是每个出现)。要在JavaScript中替换字符串的每个出现,您必须向replace()方法提供一个带有全局修饰符的正则表达式作为第一个参数,例如:

"11.111.11".replace(/\./g,'')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接