如何编写一个正则表达式来验证应该只包含十进制值的输入文本框?该值最多可以有 3 位小数(但也可以没有),以逗号作为分隔符。
例如,下面给出的这些值是有效的:-
1,234 1,23 1,2 1
这些无效:
1,2345(十进制数太多) A(字母不是数字) (空格或字符串为空) 1.234(使用点而不是逗号)
尝试这样的事情:
\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
怎么样@"\d+,?\d{0,3}"
:1个或多个数字,然后是可选的逗号,然后是0到3个数字。这假设您允许逗号前有任意数量的数字。在您的示例中,您只有一个,在这种情况下,您需要删除+
.
如果该值1,
无效,则必须将 移到?
末尾:@"\d+(,\d{1,3})?"
你可以使用这样的模式:
[0-9]+(,[0-9]{1,3})?
请注意,如果您只需要小数点前一个字符,请删除+
^\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})?