很难让我的正则表达式正常工作。基本上,我只需要一个有效的数字正则表达式,只允许一个逗号。以下是我的尝试:
[0-9]*[,]\\d
(当我以为我可能有一个带有多个逗号的数字时,不再是这种情况了)
[0-9][,]\\d
和
^\d+(?:[\,]\d+)?$
(http://regexr.com/3ggn5)
后者似乎效果最好,但是当我输入时:1,23134
它并没有违反规则。如何更好地确保输入无效的数字1,23232
(例如)它会中断,但如果你1,232
(例如,只显示有效的数字输入)就没问题
更新
这是围绕的代码,只使用RegularExpression批注:
[RegularExpression(@"^\d+(?:[\,]\d+)?$", ErrorMessage = ...]
更新2
有效数字我只是指一个格式正确符合美国标准的数字。有效数字的示例:
在美国,我们要么有逗号,要么不要在第三个数字之后(在某些情况下,第一个数字除外,1,000
有效)。虽然,如果你有逗号,你通常会使用逗号每隔三位数。所以我假设一个这样的数字:1,00000000 isn' t valid
。
无效数字的示例:
基本上,如果世界上任何其他地方在第三个数字之后的地方使用逗号,这对我需要的内容无效。只是可能有或没有逗号的数字。
答案 0 :(得分:2)
This Regex将解析许多有效格式的数字:
^-?(\d+|\d{1,3}(?:,\d{3})+)?(\.\d+)?$
如果您不需要也不需要负数或浮点数,您可以简化它:
^(?:\d+|\d{1,3}(?:,\d{3})+)$
如果你不想要逗号的数字(例如:1345):
^\d{1,3}(?:,\d{3})+$
P.S:对于来自非英语国家的用户,您可以在所有正则表达式中用空格替换逗号,它将以相同的方式工作