数值每隔三位加个逗号的正则表达式写法

数字每隔三位加个逗号的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

正则表达式真的很强大,很优美,也很有趣。实现方式有很多,如有错误,请帮忙指正,谢谢!

本文为复习用。

 

posted @ 2019-06-17 09:17  LiCa  阅读(2493)  评论(0编辑  收藏  举报