數值每隔三位加個逗號的正則表達式寫法


數字每隔三位加個逗號的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

正則表達式真的很強大,很優美,也很有趣。實現方式有很多,如有錯誤,請幫忙指正,謝謝!

本文為復習用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM