如何编写正则表达式匹配大于或等于1001的数字
原有正则失效原因
你之前使用的正则^(^[1-9][0-9]{3,4}$)$存在冗余嵌套,核心匹配逻辑是「非0开头的4-5位正整数」,可匹配的最小值为1000,没有对4位数字的下限做排除,所以会把不符合要求的1000纳入匹配结果。
正确正则实现
如果你的需求是匹配所有大于等于1001的正整数,可以使用以下正则:
^(100[1-9]|10[1-9]\d|1[1-9]\d{2}|[2-9]\d{3}|[1-9]\d{4,})$
各分段匹配逻辑说明:
100[1-9]:覆盖1001~1009区间的数字10[1-9]\d:覆盖1010~1099区间的数字1[1-9]\d{2}:覆盖1100~1999区间的数字[2-9]\d{3}:覆盖2000~9999区间的数字[1-9]\d{4,}:覆盖所有5位及以上的正整数(数值≥10000,天然满足≥1001的要求)
场景简化提示:如果你只需要匹配4位数字范围内≥1001的值(即1001~9999),可以去掉最后一段5位及以上数字的匹配规则,使用简化版正则:
^(100[1-9]|10[1-9]\d|1[1-9]\d{2}|[2-9]\d{3})$
内容的提问来源于stack exchange,提问作者mozenge
相关产品推荐
相关产品推荐

