在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/