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

求匹配001-150范围的正则表达式,现有尝试方案存在问题

正则表达式匹配001-150的正确方案

我来帮你搞定这个正则问题!先直接给你能精准匹配001到150的表达式:

^(00[1-9]|0[1-9]\d|1[0-4]\d|150)$

先说说你之前方案的问题:

  • Case1的问题:你写的1[0-5][0-9]这部分,第二个字符是0-5,第三个是0-9,这就会把151到159也包含进来,这就是为什么你的范围到了159,超出了预期的150上限。
  • Case2的问题:1[0-50][0]是错误的写法,字符组[0-50]并不表示0-50,而是表示单个字符是0-5或者0(相当于0-5),再加上第三个字符必须是0,所以只能匹配100、110…150这类末尾为0的数,漏掉了大量中间值。

拆解正确的正则逻辑:

我们把范围拆成几个不重叠的区间来覆盖:

  • 00[1-9]:匹配001到009,确保是三位数,前两位为0,最后一位从1开始(排除000)
  • 0[1-9]\d:匹配010到099,第一位是0,第二位从1到9(避免和上面的00x重复),第三位可以是0-9,覆盖所有两位数前面补0的情况
  • 1[0-4]\d:匹配100到149,第一位是1,第二位从0到4,第三位0-9,这样就覆盖了100到149的所有三位数
  • 150:单独匹配150这个边界值,因为它是范围的上限,不能包含151及以上的数,所以单独列出来最稳妥

这样组合起来,就能精准命中001到150之间的所有三位数,不会多也不会少。

内容的提问来源于stack exchange,提问作者Arnab Shaw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:38:43