正则表达式验证器接受0到5范围内的十进制数0或5的数字

Chr*_* So 4 regex

我正在尝试编写一个正则表达式验证器来接受只有小数部分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
Run Code Online (Sandbox Code Playgroud)

无论数字前面或后面有多少0都可以有效.

我想这一个^[0-5]+(?:\.[05]0?)?$,但它的情况下失败:0000.,.5,001.5.5

非常感谢!

Rob*_*bin 6

您可以使用

^0*(?:[0-4]?(?:\.5?0*)?|5(?:\.0*)?)$
Run Code Online (Sandbox Code Playgroud)

说明:

^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
    )
$
Run Code Online (Sandbox Code Playgroud)

请注意,这也会验证空字符串或单个字符串..告诉我,如果这是一个问题,作为一个quickfix你可以在开始时添加前面的检查长度和内容:(?=.)(?!\.$).

在这里演示.