大只彬

个人博客

欢迎来到我的个人博客~( ̄▽ ̄~)(~ ̄▽ ̄)~


js实现千位分隔符


方法一:使用正则表达式实现

function formatNum(num) {

  return num && 
       num.toString()
       .replace(
        /\d{1,3}(?=(\d{3})+\.)/g, 
        "$&,");
}
formatNum(1234567.890);

=> 1,234,567.89

\d{1,3}(?=(\d{3})+\.) 表示在 . 前面的数字,开头有1-3个数字,后面至少由一组3个数字结尾

?= 为正向肯定查找,其可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始

$& 表示与正则表达式相匹配的内容

方法二:常规想法

function formatNum(num){ 

  num +=''; // 数字转字符串  
  var str = "", // 字符串累加
    beginDot, // 小数点开始的地方   
    dot = num.indexOf("."), // 是否有小数点
    endStr = ""; // 小数点之后的内容
    
  if(dot != -1) {
    beginDot = num.indexOf(".");
    endStr = num.slice(beginDot);   
  }
  
  for(var i = (dot != -1) ? beginDot - 1 : num.length - 1, j = 1; i >= 0; i--, j++){  
  
      if(j%3 == 0 && i != 0){//每隔三位加逗号,过滤正好在第一个数字的情况  
          str += num[i] + ",";//加千分位逗号  
          continue;  
      }  
      
      str += num[i];//倒着累加数字  
  }  
  
  return str.split('').reverse().join("") + endStr;
  
} 
formatNum(1234567.890);

=> 1,234,567.89

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦