Regexp以千、百万等形式添加逗号(但避免在小数点后添加逗号)Javascript

Regexp以千、百万等形式添加逗号(但避免在小数点后添加逗号)Javascript,javascript,regex,floating-point,decimal,Javascript,Regex,Floating Point,Decimal,问题很简单,我们需要将逗号放在正确的位置,以帮助用户以正确的方式格式化数字 例如,如果用户输入: 123123.534343 结果应该是: 123123.534343 我们现在得到的是:(当没有“.”时失败) str.toString().replace(/\B(?=(\d{3})+(?!\d)。/g',,') 这是:(失败的原因是它在“.”后面的小数部分添加了逗号。) str.toString().replace(/\B(?=(\d{3})+(?!\d))/g',,') 有什么想法吗?最好使用

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

例如,如果用户输入:

123123.534343

结果应该是:

123123.534343

我们现在得到的是:(当没有“.”时失败)

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

这是:(失败的原因是它在“.”后面的小数部分添加了逗号。)

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

有什么想法吗?

最好使用格式化数字,因为它依赖于语言


console.log(新的Intl.NumberFormat('en-US')。格式(123123.534343))十进制前4位数字的正则表达式示例:

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

您需要根据不同的位数对其进行相应的更新(但请注意,匹配的模式限制为9,对于sed至少是这样,因此在小数点之前最多可以使用8位)。

用点拆分字符串,将正则表达式应用于整个部分并重新连接。另请参阅漂亮的一个!我不知道,我试试看,谢谢。兼容性如何?这是交叉导航@Hyyan吗?您还可以传递带有
最小分数位数的options对象,这样它就不会截断point@Hugo,这是一个很好的支持,但是如果你需要一个polyfill来支持旧的浏览器,那么就有了