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

本文详细介绍了如何实现千位分隔符的功能,包括数字转换、小数点替换及连续四位数字之间的逗号插入。通过示例代码演示了整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创文章,转载请注明: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);

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

### 关于正则表达式匹配分隔符的用法 在正则表达式中,分隔符通常用于将字分割为多个部分。例如,千分位分隔符用于格式化数字,逗号分隔符用于分割列表项等。以下是几种常见的分隔符匹配和处理方法: #### 1. 千分位分隔符 千分位分隔符是一种常见的分隔符,用于将数字每三位用逗号分隔。可以使用以下正则表达式实现: ```javascript function formatWithCommas(num) { return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } ``` 这段代码中的正则表达式 `/\B(?=(\d{3})+(?!\d))/g` 的含义如下: - `\B`:匹配非单词边界的位置[^3]。 - `(?=(\d{3})+(?!\d))`:确保当前位置之后是三个数字的倍数,并且没有更多的数字[^3]。 #### 2. 匹配逗号分隔符 如果需要匹配以逗号分隔的列表项,可以使用以下正则表达式: ```javascript var items = "apple,banana,cherry"; var result = items.split(/,\s*/); ``` 这里的正则表达式 `/,\s*/` 表示匹配逗号后可能跟随的零个或多个空格[^1]。 #### 3. 匹配路径分隔符 在处理文件路径时,分隔符通常是斜杠 `/` 或反斜杠 `\`。可以通过以下正则表达式匹配路径分隔符: ```javascript var path = "C:\\Users\\John\\Documents\\file.txt"; var parts = path.split(/[/\\]/); ``` 这里的正则表达式 `/[/\\]/` 表示匹配正斜杠 `/` 或反斜杠 `\`[^5]。 #### 4. 匹配其他特殊分隔符 对于一些自定义分隔符(如分号 `;` 或竖线 `|`),可以使用类似的正则表达式进行匹配: ```javascript var text = "item1;item2;item3"; var elements = text.split(/;/); ``` 这里的正则表达式 `/;/` 直接匹配分号作为分隔符[^1]。 ### 示例代码 以下是一个综合示例,展示如何使用正则表达式处理不同类型的分隔符: ```javascript // 千分位分隔符 function formatWithCommas(num) { return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } console.log(formatWithCommas(1234567890)); // 输出: 1,234,567,890 // 逗号分隔符 var items = "apple, banana, cherry"; var result = items.split(/,\s*/); console.log(result); // 输出: ["apple", "banana", "cherry"] // 路径分隔符 var path = "C:\\Users\\John\\Documents\\file.txt"; var parts = path.split(/[/\\]/); console.log(parts); // 输出: ["C:", "Users", "John", "Documents", "file.txt"] // 自定义分隔符 var text = "item1;item2;item3"; var elements = text.split(/;/); console.log(elements); // 输出: ["item1", "item2", "item3"] ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值