JavaScript字符串替换的行为

Behavior of JavaScript string replace

本问题已经有最佳答案,请猛点这里访问。

为什么replace函数不替换所有出现的事件?

1)不起作用的前几位:

1
2
3
4
5
//the funcion call
'999.999.999,00'.replace('.', '')

//This replaces only the first match, given as result as below
'999999.999,00'

2)有效,但使用regex:

1
2
3
4
5
 //the funcion call
'999.999.999,00'.replace(/\./g, '')

//This replaces all matches, given as result as below
'999999999,00'

它适合前1种吗?这是replace的正确行为吗?


在第一种情况下,您应该将标志作为第三个参数传递:

1
'999.999.999,00'.replace('.', '', 'g')

您可以在MDN上找到更多信息。但是,并非所有浏览器都支持这一点,您应该自行承担风险使用它。


对。javascript替换只应替换第一个匹配项。如果要替换同一字符串的多个字符串,则确实应该使用正则表达式。您还可以使用简单的while循环:

1
2
3
var match = '.';
var str = '999.999.999,00';
while(str.indexOf(match) != -1) str = str.replace(match, '');

但通常只使用regex要容易得多。但是循环可以更快。对于需要在大文本块上执行的简单替换操作,这可能是相关的。对于较小的替换操作,使用regex很好。