C# 正则表达式,用于逗号分隔的数字或仅用于数字
这是我们的后续行动。要求已经改变了,我正在寻找一些帮助,为逗号分隔的数字或没有逗号的数字提供正则表达式。下面是示例输入,以及一些失败的尝试 感谢您的帮助 可接受的输入:C# 正则表达式,用于逗号分隔的数字或仅用于数字,c#,regex,.net-3.5,C#,Regex,.net 3.5,这是我们的后续行动。要求已经改变了,我正在寻找一些帮助,为逗号分隔的数字或没有逗号的数字提供正则表达式。下面是示例输入,以及一些失败的尝试 感谢您的帮助 可接受的输入: 1,234,567 1234567 1234,567 1,234567 不可接受的输入: 1,234,567 1234567 1234,567 1,234567 一些失败的尝试: ^(\d{1,3}(?:[,]\d{3})*)|((\d)*)$ ^\d{1,3}((?:[,]?\d{3})*|(?:[,]\d{3})*)
1,234,567
1234567
1234,567
1,234567
不可接受的输入:
1,234,567
1234567
1234,567
1,234567
一些失败的尝试:
^(\d{1,3}(?:[,]\d{3})*)|((\d)*)$
^\d{1,3}((?:[,]?\d{3})*|(?:[,]\d{3})*)$
原创成功:
^\d{1,3}(?:[,]\d{3})*$
只需在末尾添加一个“或一个或多个数字”:
^(?:\d{1,3}(?:[,]\d{3})*|\d+)$
我认为你第一次几乎是对的,只是没有正确地匹配所有括号。试试这个:
^\d{1,3}(?:(?:,\d{3})+|\d*)$
这将匹配以一到三个数字开头的任何序列,后跟
- 逗号的一段或多段后跟三位数字,或
- 零个或多个数字
0,123,456
将使用接受的答案进行匹配。我一直在使用:
((?<!\w)[+-]?[1-9][0-9]{,2}(?:,[0-9]{3})+)
我有一组奇怪的数字要匹配(带逗号的整数、带空格的整数和不带逗号的整数),所以我使用非常严格的正则表达式来捕获这些组
不管怎样,还是要好好想想 +1用于正确处理正确数量的逗号组。寻求更广泛的讨论和阐述。