我得到了一个无法验证我的输入的正则表达式。
我的正则表达式:\d{1,5}([\.,]\d{0,2})?
.
它应该使用或分隔符来验证平方米(十进制值),,
并且应该在分隔符之前最多允许五个数字(并且至少一个),在分隔符之后最多允许两个数字。
所以它应该接受:
1
1,0
1.0
12345
12345,10
12345.10
但不是
.1
12345 6
12345,12 3
在您正在捕获的组中([\.,]\d{0,2})?
,您允许数字出现在0
和之间2
,但是,整个组在结尾处被标记为可选?
。因此,应将范围设置为{1,2}
:
\d{1,5}([\.,]\d{1,2})?
如果您的输入特别是一个数字(而不是一个完整的句子),我还建议添加一个前导^
和一个结尾$
。这将强制正则表达式从字符串的开头检查到结尾(分别)。最终的正则表达式应该是:
^\d{1,5}([\.,]\d{1,2})?$
如果您将此正则表达式用于验证之外,并且还想查看匹配的值,则应将当前匹配的组(小数部分)更改为不匹配的组(更改(
为(?:
),然后在完整的周围添加括号正则表达式:
^(\d{1,5}(?:[\.,]\d{1,2})?)$
你很亲密。该行为的正确正则表达式是:
^\d{1,5}(?:[\.,]\d{0,2})?$
修补 .Net 的 Regex 的好工具:Expresso。http://www.ultrapico.com/Expresso.htm