Javascript Regex:替换逗号的最后一个点

时间:2011-01-30 15:29:38

标签: javascript regex pattern-matching currency

我有以下代码:

var x = "100.007"
x = String(parseFloat(x).toFixed(2));
return x
=> 100.01

这非常棒,我的工作方式非常棒。我只想要一个小小的补充,就像这样:

var x = "100,007"
x.replace(",", ".")
x.replace
x = String(parseFloat(x).toFixed(2));
x.replace(".", ",")
return x
=> 100,01

但是,这段代码将取代第一次出现的",",我想要抓住最后一个。任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:15)

您可以使用正则表达式执行此操作:

x = x.replace(/,([^,]*)$/, ".$1");

该正则表达式匹配逗号,后跟任意数量的文本,不包括逗号。替换字符串只是一个句点,后跟原始最后一个逗号之后的句子。字符串中前面的其他逗号不会受到影响。

现在,如果您真的要转换格式为“欧洲风格”的数字(因为缺少更好的术语),您还需要担心“。” “美国风格”编号可以使用逗号的地方中的字符。我想你可能只是想摆脱它们:

x = x.replace(/\./g, '');

当您对字符串使用“.replace()”函数时,您应该理解返回修改后的字符串。但是,它不会修改原始字符串,因此声明如下:

x.replace(/something/, "something else");

对“x”的值没有影响。

答案 1 :(得分:2)

您可以使用lastIndexOf()函数查找,的最后一次出现并替换它。

另一种方法是使用带有行尾标记的正则表达式:

myOldString.replace(/,([^,]*)$/, ".$1");

答案 2 :(得分:1)

您可以使用lastIndexOf查找,的最后一次出现。然后,您可以使用slice,之前和之后的部分与.放在一起。

答案 3 :(得分:1)

您可以使用正则表达式。你想要替换最后一个',',所以基本的想法是替换','之后没有','。

x.replace(/,([^,]*)$/, ".$1");

将返回您想要的内容: - )。

答案 4 :(得分:0)

你不必担心它是否是最后一个“。”,因为只有一个。 JavaScript不会在内部使用逗号或点分隔集存储数字。