JavaScript字符串替换的行为

时间:2014-01-30 19:31:23

标签: javascript replace

为什么replace函数不会替换所有出现的内容?

1)Ex不起作用:

//the funcion call
'999.999.999,00'.replace('.', '')

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

2)Ex可行,但使用正则表达式:

 //the funcion call
'999.999.999,00'.replace(/\./g, '')

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

Ex 1 是否合适?这是replace的正确行为吗?

2 个答案:

答案 0 :(得分:2)

在你的第一种情况下,你应该将旗帜作为第三个参数传递:

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

您可以在MDN找到更多信息。但是,并非所有浏览器都支持此功能,您应该自担风险使用它。

答案 1 :(得分:1)

是。 JavaScript替换应该只替换第一个匹配。如果要替换多个相同的字符串,则应该使用正则表达式。你也可以使用一个简单的while循环:

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

但通常使用正则表达式要容易得多。 while loops can be faster though。对于需要对大块文本执行的简单替换操作,这可能是相关的。对于较小的替换操作,使用Regex就可以了。