【问题标题】:Regexp to add commas in thousands, millions, etc (but avoiding adding them after the decimal point) Javascript正则表达式以千、百万等添加逗号(但避免在小数点后添加它们)Javascript
【发布时间】:2018-07-24 08:09:53
【问题描述】:

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

例如如果用户输入:

123123123.534343

结果应该是:

123,123,123.534343

我们现在拥有的是这样的:(当没有'.'时失败)

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

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

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

有什么想法吗?

【问题讨论】:

标签: javascript regex floating-point decimal


【解决方案1】:

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

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

【讨论】:

  • 不错的一个!不知道这个,我试试,谢谢。兼容性怎么样?这是交叉导航@Hyyan 吗?
  • 您也可以使用minimumFractionDigits 传递一个选项对象,这样它就不会截断该点之后的数字
  • @Hugo ,根据canIuse.com 它得到了很好的支持,但是如果你需要一个polyfill 来支持旧浏览器,那么有andyearnshaw/Intl.js
【解决方案2】:

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

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

您需要针对不同的位数相应地更新它(但请注意,匹配模式的限制为 9,至少对于 sed,因此这将适用于小数点前最多 8 位) .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    相关资源
    最近更新 更多