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

如何用正则表达式(Regex)匹配递增数字序列?

匹配递增数字序列的正则解决方案

针对不同递增模式的正则写法

不用手动枚举所有数字组合,以下是针对三种递增模式的高效正则方案,适配多数主流正则引擎(如PCRE、Python regex、JavaScript ES2018+):

1. 单数字连续递增(如123456)

匹配3位及以上的连续单数字递增序列(可修改{2,}调整最小长度,比如{1,}就是2位及以上):

(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){2,}\d
  • 原理:用正向预查确保每个数字后紧跟比它大1的数字,连续满足至少2次后,匹配最后一个收尾数字,形成完整的递增序列。

2. 双数字组递增(如818283)

匹配3组及以上的双数字递增序列(每组两位,后一组比前一组大1):
如果你的正则引擎支持表达式求值(如PHP PCRE、Python regex库),可以用动态匹配:

(\d{2})(?=(?:0*(?:\1+1)))(?:0*(?:\1+1)){2,}

如果引擎不支持求值,用脚本生成预定义匹配片段更高效,比如Python脚本:

# 生成双数字递增的正则片段
pairs = [f"{i:02d}(?={i+1:02d})" for i in range(99)]
regex_double = f"(?:{'|'.join(pairs)}){{2,}}\d{{2}}"
print(regex_double)

执行后会自动生成完整的双数字递增正则,无需手动编写。

3. 三数字组递增(如810811)

逻辑和双数字一致,匹配3组及以上的三数字递增序列:
支持求值的引擎写法:

(\d{3})(?=(?:0*(?:\1+1)))(?:0*(?:\1+1)){2,}

不支持的话,同样用脚本生成:

triples = [f"{i:03d}(?={i+1:03d})" for i in range(999)]
regex_triple = f"(?:{'|'.join(triples)}){{2,}}\d{{3}}"
print(regex_triple)

匹配任意位置的序列

要匹配序列在数字串的开头、中间或结尾,只需在正则前后加上\d*:
比如单数字的完整匹配正则:

\d*(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){2,}\d\d*

批量处理建议

因为你有数千个10位数字,建议把这些数字存入文本文件,用支持正则的工具(如grep、Python脚本、VS Code查找替换)批量匹配,比手动逐个处理高效得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:13:08