我有一个正则表达式,无法验证我的输入。
我的正则表达式:\d{1,5}([\.,]\d{0,2})?
它应该使用.
或,
的分隔符来验证平方米(十进制值),并且应该在分隔符之前允许最多五位数(并且至少一位),并且在分隔符之后最多允许两位数
所以它应该接受:
1
1,0
1.0
12345个
12345,10
12345.10
但不是
0.1
12345的 6
12345,12 3
答案 0 :(得分:1)
在您正在捕获的群组([\.,]\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})?)$
答案 1 :(得分:1)
你很亲密。该行为的正确正则表达式为:
^\d{1,5}(?:[\.,]\d{0,2})?$
用于修补.Net:Expresso的正则表达式的好工具。 http://www.ultrapico.com/Expresso.htm