如何编写一个正则表达式来验证应该只包含十进制值的输入文本框?该值可以包含最多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)
答案 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})?