浮点数点左边的数每三位添加一个逗号

如何将浮点数点左边的数每三位添加一个逗号?12345678.9---->12,345,678.9

function formatNum(num) {
  return num && num.toString().replace(/(\d)(?=(\d{3})+\.)/g, function ($1, $2, $3) {
    console.log($1, $2, $3);
    return $2 + ',';
  });
}
console.log(formatNum(12345678.9));
/* 输出

  2 2 678
  5 5 678
  12,345,678.9

*/

其中,replace() 方法是字符串的,$1 $2 $3分别对应前面正则表达式中的三个括号(\d)   (?=(\d{3})+\.)   (\d{3}),g表示全局搜索。

x(?=y)表示判断x后面紧跟着y,所以上述正则表达式的意思就是一个数字后面紧跟着3的整数倍的数字(3个、6个...)和一个小数点(.)

posted @ 2020-03-26 10:16  木子呆头  阅读(485)  评论(0编辑  收藏  举报