十进制数的正则表达式(最多3位十进制数字,带逗号)

时间:2013-08-26 19:05:10

标签: c# regex

如何编写一个正则表达式来验证应该只包含十进制值的输入文本框?该值可以包含最多3位小数(但也没有),逗号作为分隔符。

例如,下面给出的这些值是有效的: -

1,234
1,23
1,2
1

这些无效:

1,2345 (too many decimal numbers)
A (a letter is not a number)
  (a space or string empty)
1.234 (used a dot instead of a comma)

4 个答案:

答案 0 :(得分:7)

尝试这样的事情:

\d+(?:,\d{1,3})?

解释: -

\d+        # multiple digits
(?:        # start non-capturing group  
  ,        # a comma
  \d{1,3}  # 1-3 digits
)?         # end non-capturing group, made optional

答案 1 :(得分:2)

@"\d+,?\d{0,3}":1位或更多位数,然后是可选的逗号,然后是0到3位数。这假定您在逗号之前允许任意数量的数字。在您的示例中,您只有一个,在这种情况下,您可以删除+

如果值1,无效,则必须将?移到最后:@"\d+(,\d{1,3})?"

答案 2 :(得分:2)

你可以使用这样的模式:

[0-9]+(,[0-9]{1,3})?

答案 3 :(得分:1)

请注意,如果您只想要小数点前的一个字符,请删除+

^\d+(,(\d?){3})?$


^   //start
\d+   //one or more decimal digits
(,(\d?){3})?    //a comma, followed by up to 3 decimal digits, optionally
$    //end

如果您不希望接受1,,那么中间部分可以是(,\d(\d?){2})?