You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写匹配000到999三位数字范围的正则表达式

匹配000-999数值开头内容的正则方案

原正则的问题

你之前写的^[001-999]{3}$完全不符合正则语法逻辑,问题出在两点:

  • []是单字符匹配组,只匹配单个字符,组内的-只能定义单个字符的范围(比如[0-9]匹配单个数字),写001-999这种多字符内容时,正则根本不会按数值范围解析,最终只会被识别为匹配0、1-9的单个数字,完全实现不了三位数值的范围判断
  • 末尾的$是字符串结束锚点,加了之后会要求整串完全匹配规则,和你「筛选以指定内容开头」的需求相悖,而且逻辑上天然无法正确覆盖000-099的前导零场景。

可用的正确规则

根据实际场景选对应规则即可:

  • 场景1:要求开头必须是固定3位、带前导零、数值覆盖000-999的数字串(比如000、005、099、123、999这类三位数字格式),直接用:

    ^\d{3}
    

    逻辑说明:

    • ^锚定字符串开头位置
    • \d{3}匹配连续3个0-9的数字字符,等价于[0-9]{3},刚好覆盖000到999的所有三位数字组合,原生支持000-099的前导零格式
    • 不加$锚点,只要开头满足三位数字规则就会命中,不限制后续内容,完全匹配「按开头筛选」的需求
      如果你需要整串完全是000-999的三位数字、不是匹配开头,直接在规则末尾加$就行,即^\d{3}$。
  • 场景2:要求开头的数字数值在0-999区间,但不强制固定三位、不需要前导零(比如0、23、345这类开头也要匹配,同时不会误匹配1000及以上数字的前三位),用:

    ^(?:\d{1,3})(?!\d)
    

    逻辑说明:

    • \d{1,3}匹配1-3位连续数字
    • (?!\d)是负向预查,确保匹配到的数字段后面不会紧跟其他数字,避免把1234这类四位以上数字的前三位误判为符合要求的开头。

内容的提问来源于stack exchange,提问作者Andrés Caro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:54:24