正则表达式从 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)
这是我的两分钱:
(?:^(?=(?:,*\d,*){1,4}$)|\G(?!^))\d*\K,(?!$)
在线查看Demo
我的想法是删除字符串中任何位置的任何逗号,例如:,,,8
、9,,,9
等,只要最多只有 4 个数字。
我需要一个正则表达式来去除所有小于 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)
这是我的两分钱:
(?:^(?=(?:,*\d,*){1,4}$)|\G(?!^))\d*\K,(?!$)
在线查看Demo
我的想法是删除字符串中任何位置的任何逗号,例如:,,,8
、9,,,9
等,只要最多只有 4 个数字。