我试图编写一个正则表达式验证器来接受仅包含小数部分0或5且在0-5范围内的数字。例如:
-1 false
-.5 false
-0 false
000000 true
0.0 true
0000. true
0 true
.50000000 true
00001. true
01.50 true
2.00000 true
2.5000 true
03 true
03.5 true
0004 true
0004.5000 true
00005.0 true
0 true
0.5 true
1 true
1.5 true
2 true
2.5 true
3 true
3.5 true
4 true
4.5 true
5 true
1.05 false
5.5 false
10 false
20 false
30 false
40 false
50 false
无论数字前面或后面有多少0都可以有效。
我尝试过这个^[0-5]+(?:\.[05]0?)?$
,但案例失败:0000.
,.5
,001.
和5.5
非常感谢!
答案 0 :(得分:5)
您可以使用
^0*(?:[0-4]?(?:\.5?0*)?|5(?:\.0*)?)$
说明:
^0* # allow leading 0s
(?: # non capturing group
[0-4]? # below 5: number starts with 0-4
(?:\.5?0*)? # optional: decimal dot, might be followed by one 5 and 0s.
| # or
5(?:\.0*)? # 5, possibly followed by 0s
)
$
请注意,这也会验证空字符串或单个.
。告诉我,如果这是一个问题,作为一个quickfix,您可以在开头添加前瞻,以检查长度和内容:(?=.)(?!\.$)
。
请参阅demo here。
答案 1 :(得分:2)
答案 2 :(得分:1)
答案 3 :(得分:1)
这是另一个:
^0*(([0-4]?(\.5?0*)?)|(5(\.0*)?))$