【发布时间】:2017-06-02 08:00:56
【问题描述】:
我使用以下函数来格式化数字:
function formatNumber(value, precision) {
if (Number.isFinite(value)) {
// Source: kalisjoshua's comment to VisioN's answer in the following stackoverflow question:
// http://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-money-in-javascript
return value.toFixed(precision || 0).replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")
} else {
return ""
}
}
除一种情况外,上述工作:
1130.000200 becomes 1,130.000,200
但我需要
1130.000200 become 1,130.000200
似乎我需要在?<! 后面进行否定的查找,即匹配一个不以点开头的数字,但是如何匹配?
编辑:正如this question 中的回答,Number.prototype.toLocaleString() 是较新浏览器的一个很好的解决方案。我需要支持 IE10,所以把这个问题留在这里吧。
【问题讨论】:
-
我推荐你使用lib wNumb.js,来格式化数字。
-
使用
Intl.NumberFormat。
标签: javascript regex