1

我得到了一个无法验证我的输入的正则表达式。

我的正则表达式:\d{1,5}([\.,]\d{0,2})?

.它应该使用或分隔符来验证平方米(十进制值),,并且应该在分隔符之前最多允许五个数字(并且至少一个),在分隔符之后最多允许两个数字。

所以它应该接受:
1
1,0
1.0
12345
12345,10
12345.10

但不是
.1
12345 6
12345,12 3

4

2 回答 2

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})?)$
于 2012-10-07T22:08:27.253 回答
1

你很亲密。该行为的正确正则表达式是:

^\d{1,5}(?:[\.,]\d{0,2})?$

修补 .Net 的 Regex 的好工具:Expresso。http://www.ultrapico.com/Expresso.htm

于 2012-10-07T22:11:20.817 回答