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

正则表达式匹配特定规则:新增连续数字重复限制后失效如何解决

解决方案

修正后的正则表达式如下,可同时满足原有规则和新增的数字连续重复限制:

^(?![0-9]*([0-9])\1{4})\d{0,6}(?!.*(\p{L})\2\2)\p{L}{6,11}$|^(?!.*(\p{L})\1\1)\p{L}{6,11}(?![0-9]*([0-9])\2{4})\d{0,6}$

问题分析

你之前的修改无效,核心原因有两点:

  1. 断言位置错误:你把数字重复检查的断言放在了字母序列的前后,但这些位置的后续/前置内容是字母,根本不会匹配到数字,导致断言完全不起作用。
  2. 重复次数计算错误:你用\1{3}检查的是连续4个相同数字,但需求是禁止连续5个及以上,应该用\1{4}(表示同一个数字连续出现5次)。

正则拆解

这个正则分为两个分支,分别对应「前缀数字+字母」和「字母+后缀数字」(含纯字母的情况):

分支1:前缀数字+字母(含纯字母)

  • ^(?![0-9]*([0-9])\1{4}):负前瞻,确保开头的0-6位数字中没有连续5个相同数字
  • \d{0,6}:匹配0-6位前缀数字(0位即纯字母)
  • (?!.*(\p{L})\2\2):负前瞻,确保后续的6-11位字母中没有连续3个相同字母
  • \p{L}{6,11}$:匹配6-11位字母到字符串结尾

分支2:字母+后缀数字(含纯字母)

  • ^(?!.*(\p{L})\1\1):负前瞻,确保开头的6-11位字母中没有连续3个相同字母
  • \p{L}{6,11}:匹配6-11位字母
  • (?![0-9]*([0-9])\2{4}):负前瞻,确保后续的0-6位数字中没有连续5个相同数字
  • \d{0,6}$:匹配0-6位后缀数字(0位即纯字母)到字符串结尾

示例验证

  • 含连续5个相同数字的行(如0000048hghtrff7、fmidjkydf1422222)会被断言排除,不会匹配
  • 符合规则的行(如1852rhogkent4、gihngpenitg)会被正确匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:35:02