2016年08月10日 03:57:26

正则表达式千分位加逗号实现

作者: 

关于正则表达式千分位加逗号,也算是个比较常见的问题,今天就来分析一下。

正则表达式:

  1. (?<=\d)(?<!\.\d*)(?=(\d{3})+(\.|$))

替换为:,

我们拆开来看看:

  1. (?<=\d) #当前位置前面必须是数字
  2. (?<!\.\d*) #当前位置前面不能是小数点
  3. (?=(\d{3})+(\.|$)) #当前位置是3个数字的循环,最后到小数点或结束

对照一串数字我们就不难发现,上面指定的当前位置,就是千分位所在位置,如:

  1. 345,678
  2. 12,345,678.12345
  3. 2,345,678

注:由于PHP不支持非定长逆序环视,因此,请使用Regexbuddy的 C# 语言进行测试。另外,Java可以使用\d{0,1000}来代替\d*进行测试

注:补充于2017-07-17

今天突然来了灵感,变相实现了非定长逆序环视,大家可以参考一下 :)

  1. #支持10位小数
  2. (?<!\.)(?<!\.\d)(?<!\.\d\d)(?<!\.\d\d\d)(?<!\.\d\d\d\d)(?<!\.\d\d\d\d\d)(?<!\.\d\d\d\d\d\d)(?<=\d)(?=(\d{3})+(\.|$))

在线工具演示地址:非定长逆序环视变相实现解决千分位加逗号正则问题

来自【混沌】的更简洁实现,原理是借助或分支优先消耗掉小数位,非小数位部分按前面的思路定位加入逗号

  1. \d{3}\.\d*$|(?<!^)(?=(?:\d{3})+(?:\.|$))

在线工具演示地址:简洁实现千分位加逗号正则表达式



未经同意禁止转载!
转载请附带本文原文地址:正则表达式千分位加逗号实现,首发自 Zjmainstay学习笔记
阅读( 13018 )
看完顺手点个赞呗:
(10 votes)

1.PHP cURL群:PHP cURL高级技术
2.正则表达式群:专精正则表达式
3. QQ联系(加请说明):QQ联系博主(951086941)
4. 邮箱:zjmainstay@163.com
5. 打赏博主:

网站总访问量: