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

如何创建正则表达式排除带可选连字符的重复数字ID?

正则表达式验证特定格式ID并排除全重复字符组合

初始需求

需要正则表达式验证符合以下格式的ID:

^[0-9]{2}[-]{0,1}[0-9]{7}$

但要排除所有字符完全重复的组合,例如:

  • 00-0000000 和 000000000
  • 11-1111111 和 111111111
  • ...
  • 99-9999999 和 999999999
    注意:22-2222221 这类ID是有效的。

已尝试的正则表达式:

^(\d)(?!\1{8})\d{8}$|^(\d)(?!\1{2})\d{1}-(?!\1{7})\d{7}$

但带连字符的部分无法正常工作。

初始需求的解决方案

可以通过负前瞻统一处理带/不带连字符的情况,正则表达式如下:

^(?!(\d)(?:-?\1)*$)\d{2}-?\d{7}$

规则说明:

  • ^(?!(\d)(?:-?\1)*$):负前瞻断言,检查整个ID是否由同一个数字重复组成(中间允许存在可选连字符),如果是则直接排除。
  • \d{2}-?\d{7}:匹配“2位数字+可选连字符+7位数字”的基础格式。

扩展需求适配

需要将方案适配到以下格式:

^[0-9]{3}[-]{0,1}[0-9]{2}[-]{0,1}[0-9]{4}$

你的思路是正确的,调整后的正则表达式为:

^(?!(\d)(?:-?\1)*$)\d{3}-?\d{2}-?\d{4}$

规则说明:

  • 负前瞻部分(?!(\d)(?:-?\1)*$)逻辑不变,依然排除所有字符完全重复的组合(不受连字符位置影响)。
  • \d{3}-?\d{2}-?\d{4}:匹配“3位数字+可选连字符+2位数字+可选连字符+4位数字”的目标格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:15:32