正则表达式以数千,数百万等形式添加逗号(但避免在小数点后添加逗号)

时间:2018-07-24 08:09:54

标签: javascript regex floating-point decimal

问题很简单,我们需要将逗号放在正确的位置,以帮助用户以正确的方式格式化数字。

例如,如果用户输入:

  

123123123.534343

结果应为:

  

123,123,123.534343

我们现在所拥有的是:(当没有'。'时失败)

  

str.toString()。replace(/ \ B(?=(\ d {3})+(?!\ d)。)/ g,',');

并且:(失败,因为它在'。'之后的小数部分添加了逗号)

  

str.toString()。replace(/ \ B(?=(\ d {3})+(?!\ d))/ g,',');

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

最好使用Intl.NumberFormat格式化数字,因为它取决于语言

console.log(new Intl.NumberFormat('en-US').format(123123123.534343));

答案 1 :(得分:0)

小数点前4位数字的正则表达式示例:

echo 1234.556 | sed 's/\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\(\.[0-9]*\)/\1,\2\3\4\5/'

您需要相应地更新它以换取其他位数(但请注意,对于sed,匹配的模式限制为9,至少用于sed,因此最多可在小数点前8位)