正则表达式从 10,000 以下的数字中删除逗号

Regex to remove commas from numbers under 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}) 

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

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

有什么想法吗? 谢谢, 兰迪

更新:抱歉,我忘了说这必须在 .NET 中工作,所以 \K 不会工作...

您只需在正则表达式后插入 [0-9]{1-3}

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

或类似的东西:

\d+((,)\d+)

也可以。

要匹配 10,000 以下的数字,您可以匹配逗号前的单个数字而不是 2,并且匹配逗号后的 1-3 位数字也可以匹配 1,9。

为防止部分匹配,您可以断言空白边界。

(?<!\S)(?<d1>\d),(?<d2>\d{1,3})(?!\S)

Regex demo

这是我的两分钱:

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

在线查看Demo

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