2

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

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

1,234
1,23
1,2
1

这些无效:

1,2345(十进制数太多)
A(字母不是数字)
  (空格或字符串为空)
1.234(使用点而不是逗号)
4

4 回答 4

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
于 2013-08-26T19:11:42.780 回答
2

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

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

于 2013-08-26T19:07:54.990 回答
2

你可以使用这样的模式:

[0-9]+(,[0-9]{1,3})?
于 2013-08-26T19:08:25.260 回答
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})?

于 2013-08-26T19:16:40.617 回答