求助:修正正则表达式以限制输入为-5至75且小数仅为.5
修正后的正则表达式及说明
需求明确
需要匹配**-5到75之间的数字**,小数部分仅允许.5或无小数,需排除-5.5、-12这类超出范围的内容。
修正后的正则表达式
^(?:-5|-(?:[1-4](?:\.5)?|0\.5)|0(?:\.5)?|[1-9](?:\.5)?|[1-6][0-9](?:\.5)?|7[0-4](?:\.5)?|75)$
规则拆分(按匹配场景)
- 负数范围(-5到0):
- 仅允许
-5(最小边界整数) - 允许
-0.5、-1到-4.5的格式:-(?:[1-4](?:\.5)?|0\.5)
- 仅允许
- 0及正数范围(0到75):
- 0的合法格式:
0(?:\.5)?(0或0.5) - 1-9的合法格式:
[1-9](?:\.5)?(如1、3.5) - 10-69的合法格式:
[1-6][0-9](?:\.5)?(如12、66.5) - 70-74的合法格式:
7[0-4](?:\.5)?(如70、74.5) - 最大边界整数:
75(不允许75.5,因超出上限)
- 0的合法格式:
关键修正点
- 单独锁定负数最小边界:仅允许
-5作为负数的最小整数,直接排除-5.5这类小于-5的数值 - 限制负数上限:通过
-[1-4]限定负数整数部分最大为-1,搭配-0.5覆盖0到-1之间的小数,避免匹配-12这类远小于-5的数 - 剔除无效前导零:用
[1-9]和[1-6][0-9]避免012这类不符合常规数字格式的内容 - 严格限定75的格式:单独列出
75,排除75.5或75.0这类不符合要求的写法
内容的提问来源于stack exchange,提问作者thegreenedition
相关产品推荐
相关产品推荐

