十进制(平方米)值的正则表达式

时间:2012-10-07 21:54:35

标签: c# regex decimal

我有一个正则表达式,无法验证我的输入。

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

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

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

但不是 0.1
12345的 6
12345,12 3

2 个答案:

答案 0 :(得分:1)

在您正在捕获的群组([\.,]\d{0,2})?中,您允许数字显示在02次之间,然而,整个群组都是根据结尾?标记为可选。因此,范围应设置为{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