加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 01:11:46 所属栏目:百科 来源:网络整理
导读:原创文章,转载请注明:http://www.jb51.cc/article/p-remitfwx-beg.html 千位分隔符就是在数字中,每隔三位数加进一个逗号,实现的想法就是判断数字中是否有超过四个相连的数字,如果有就在他们中间插入逗号,直到找不到四个相连的数字为止。另外一点是拆分

原创文章,转载请注明:http://www.52php.cn/article/p-remitfwx-beg.html

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

/** * 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);

测试结果:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读