在js中有许多种方式能够将逗号作为千位分隔符把整数进行格式化。
最简单的方式就是利用String.prototype.replace()方法,只需使用以下两个参数即可。
regular expression: (?=(\d{3})+(?!\d))
replacement value: $1,
使用正则表达式去做,然后将要匹配的数字使用$1,进行替换了。这个$1是一个特殊的替换字符,它保存第一个带圆括号的子串(在我们的例子里,它是匹配的数字)。,逗号字符是我们的分隔符。
例子:
function formatNumber(num) {
return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
}
console.info(formatNumber(2665)) // 2,665
console.info(formatNumber(102665)) // 102,665
console.info(formatNumber(111102665)) // 111,102,665
当然此方法也适用于双精度数字。
console.info(formatNumber(1240.5)) // 1,240.5
console.info(formatNumber(1000240.5)) // 1,000,240.5
currency formatting --做了一点小改动
function currencyFormat(num) {
return '$' + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
}
console.info(currencyFormat(2665)) // $2,665.00
console.info(currencyFormat(102665)) // $102,665.00
对于currency formatting 来说,利用了Number.prototype.toFixed()将数字转换为保留两位的。
如果货币格式需要区域性,也可以再做点小改动。
function currencyFormatDE(num) {
return (
num
.toFixed(2) // always two decimal digits
.replace('.', ',') // replace decimal point character with ,
.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.') + ' €'
) // use . as a separator
}
console.info(currencyFormatDE(1234567.89)) // output 1.234.567,89 €
原文: https://blog.abelotech.com/posts/number-currency-formatting-javascript/