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