我需要一个应该验证小数点和范围的正则表达式.应该存在3个数字,包括点,并且值必须大于0.0.这意味着有效范围为0.1到7.0.
我使用了以下正则表达式: ^\\d{1,1}(\\.\\d{1,2})?$
除范围验证外,它工作正常.我需要改变什么?
Tim*_*ker 17
众所周知,Regex在验证数字范围方面是不好的.但这是可能的.您必须将数字范围细分为这些数字的预期文本表示:
^ # 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
Run Code Online (Sandbox Code Playgroud)
作为单线:
^(?:7(?:\.0)?|[1-6](?:\.[0-9])?|0?\.[1-9])$
Run Code Online (Sandbox Code Playgroud)
在Java中:
Pattern regex = Pattern.compile("^(?:7(?:\\.0)?|[1-6](?:\\.[0-9])?|0?\\.[1-9])$");
Run Code Online (Sandbox Code Playgroud)