用正则表达式实现千分位分隔符

原创 2015年07月10日 23:17:43

原创文章,转载请注明:http://blog.csdn.net/chang_yuan_2011/article/details/46836045

千位分隔符就是在数字中,每隔三位数加进一个逗号,实现的想法就是判断数字中是否有超过四个相连的数字,如果有就在他们中间插入逗号,直到找不到四个相连的数字为止。另外一点是拆分应该是从尾部开始。一开始将小数点转换成逗号作为整个搜索的起始位置,整个数句拆分完再把最后一个的逗号还原成小数点。

/**
 * User : YuanChang<yuanchang201344@gmail.com>
 * Date : 2015/7/10.
 * Time : 22:25
 */

function thousands(num){

    num = num.toString();   //将输入的数字转换为字符串

    if(/^-?\d+\.?\d+$/.test(num)){  //判断输入内容是否为整数或小数
        if(/^-?\d+$/.test(num)){    //判断输入内容是否为整数
            num =num + ",00";   //将整数转为精度为2的小数,并将小数点换成逗号
        }else{
            num = num.replace(/\./,',');    //将小数的小数点换成逗号
        }

        while(/\d{4}/.test(num)){ //
            /***
             *判断是否有4个相连的数字,如果有则需要继续拆分,否则结束循环;
             *将4个相连以上的数字分成两组,第一组$1是前面所有的数字(负数则有符号),
             *第二组第一个逗号及其前面3个相连的数字;
             * 将第二组内容替换为“,3个相连的数字,”
             ***/
            num = num.replace(/(\d+)(\d{3}\,)/,'$1,$2');
        }

        num = num.replace(/\,(\d*)$/,'.$1');   //将最后一个逗号换成小数点
    }
}

//测试
thousands(-1);
thousands(-100);
thousands(-10000);
thousands(-1000000);
thousands(-1000.1);
thousands(-1.001);
thousands(-0.1);
thousands(-0.001);

thousands(1);
thousands(100);
thousands(10000);
thousands(1000000);
thousands(1.1);
thousands(1.001);
thousands(1000.1);
thousands(0.001);

测试结果:
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

JAVA数字千分位和小数点的现实(处理金额问题)

JAVA数字千分位和小数点的现实(处理金额问题)
  • qq_28867949
  • qq_28867949
  • 2017年06月01日 15:51
  • 2539

”js Javascript 字符串数组正则分割 字符串正则分割 “

因项目需要,自己用源生js语言写了一个可以将字符串数组或者字符串以指定字符分割,根据正则过滤得到一个数组的方法...
  • crslee
  • crslee
  • 2014年10月16日 10:45
  • 1394

c# 使用正则表达式去除字符串中用双引号括起来的千分位号。

  • 2013年12月14日 13:00
  • 981B
  • 下载

保留小数点两位和千分位分隔符的使用

页面显示如下: ------------------------------------------------- Insert title here 1.输入的数字...
  • wangqing84411433
  • wangqing84411433
  • 2017年12月27日 22:54
  • 68

js 实现 数字千分位函数

  • 2010年03月30日 14:50
  • 601B
  • 下载

js 实现数值的千分位及保存小数方法

/** * 将数值四舍五入后格式化. * * @param num 数值(Number或者String) * @param cent 要...
  • lyd518
  • lyd518
  • 2014年03月05日 17:34
  • 4644

js 实现数值的千分位及四舍五入保存小数方法

/** * 将数值四舍五入后千分位格式化. * * @param num 数值(Number或者String) * @param cen...
  • kevincharles
  • kevincharles
  • 2016年08月24日 13:50
  • 516

delohi千分位控件

  • 2014年04月01日 16:05
  • 478KB
  • 下载

数字或金额千分位格式化组件

  • 2015年08月13日 11:48
  • 180KB
  • 下载

限制小数位数,实时千分位金额

  • 2016年09月06日 14:50
  • 5KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用正则表达式实现千分位分隔符
举报原因:
原因补充:

(最多只允许输入30个字)