正则表达式小数为0.1 - 7.0的范围

时间:2012-03-21 07:16:16

标签: regex range

我需要一个正则表达式来验证小数点和范围。应该存在3个数字,包括点,并且值必须大于0.0。这意味着有效范围为0.1到7.0。

我使用了以下正则表达式:^\\d{1,1}(\\.\\d{1,2})?$

除范围验证外,它工作正常。我需要改变什么?

2 个答案:

答案 0 :(得分:13)

在验证号码范围时,正则表达式非常糟糕。但这是可能的。您必须将数字范围细分为这些数字的预期文本表示形式:

^                  # Start of string
(?:                # Either match...
 7(?:\.0)?         # 7.0 (or 7)
|                  # or
 [1-6](?:\.[0-9])? # 1.0-6.9 (or 1-6)
|                  # or
 0?\.[1-9]         # 0.1-0.9 (or .1-.9)
)                  # End of alternation
$                  # End of string

作为一个单行:

^(?:7(?:\.0)?|[1-6](?:\.[0-9])?|0?\.[1-9])$

在Java中:

Pattern regex = Pattern.compile("^(?:7(?:\\.0)?|[1-6](?:\\.[0-9])?|0?\\.[1-9])$");

答案 1 :(得分:0)

要完成出色的@TimPietzcker答案,

此正则表达式...

^(?:7(?:\.0)?|[1-6](?:\.(?:[0-9])?)?|0?(?:\.(?:[1-9])?)?)$

还匹配:

0
0.
2. 
.2

任何需要它的人!