首页 > 解决方案 > 正则表达式从 10,000 以下的数字中删除逗号

问题描述

我需要一个正则表达式来从 10,000 以下的所有数字中删除逗号,例如 9999 但 10,000、1,000,000 等。

这适用于 9,999,正确忽略 10,000,但搞砸了 1,000,000(1000,000):

\b([0-9]),([0-9]{3}) 
$1$2

不幸的是,我不能简单地排除像 9999 这样的 4 位数字后面的逗号。我尝试了另一种方法,但它错过了 9,999:

\b(?<![.,])(?<d1>\d{2})(?<d2>\d{3})(?!,)\b
$1,$2

有任何想法吗?谢谢,兰迪

更新:对不起,我忘了提到这必须在.NET中工作,所以 \K 不会工作......

标签: regexnumberscomma

解决方案


这是我的两分钱:

(?:^(?=(?:,*\d,*){1,4}$)|\G(?!^))\d*\K,(?!$)

查看在线演示

我的想法是删除任何逗号,无论字符串中的哪个位置,例如:,,,89,,,9,只要最多只有 4 位数字。


推荐阅读