數字每隔三位加個逗號的js正則表達式寫法
這里有三種寫法,如下:
function formatterNum(num) {
//return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
//return (num || 0).toString().replace(/(\d{1,3})(?=(?:\d{3})+)/g, '$1,');
return (num || 0).toString().replace(/(?!^)(\d{3})(?=(?:\d{3})*$)/g, ',$1');
}
正則表達式的學習網站:http://blog.csdn.net/zaifendou/article/details/5746988
經過學習,發現以上寫法只能針對正整數。
下面有兩種寫法,可以處理包括整數,小數和負數,其中小數部分不做處理。
//整數 如 -123456 會變成 -123,456
//小數 如 -123456.00000 會變成 -123,456.000000
第一種:
formatterNum(num) {
return (num || 0).toString().replace(/(?!^)(?<!-)(?<!\.\d*)(\d{3})(?=(\d{3})*(\.\d+)?$)/g, ',$1');
}
第二種:
FormatNum(num) {
var numVal = num || 0;
var beforeNum = numVal.toString().split(".")[0];//獲取小數點之前的數字
var afterNum = numVal.toString().split(".")[1];//獲取小數點之后的數字
var beforeStr = beforeNum.replace(/(?!^)(?<!-)(\d{3})(?=(?:\d{3})*$)/g, ',$1');
var wholeStr = beforeStr;
if (afterNum) {
wholeStr = beforeStr + "." + afterNum;
}
return wholeStr;
}
后面發現一種更好的正則來處理,能處理包括小數,整數,負數方面的數值,小數部分也會做處理
FormatNum(num) {
return (num || 0).toString().replace(/\B(?=(\d{3})+\b)/g, ',');
}
在線驗證:http://regex.zjmainstay.cn/r/0eTu6m/1
正則表達式真的很強大,很優美,也很有趣。實現方式有很多,如有錯誤,請幫忙指正,謝謝!
本文為復習用。