首页 > 解决方案 > 匹配数字中的重复数字

问题描述

我需要正则表达式来检查重复数字的数字。

所有数字都包含 12 位数字,我们需要跳过前 6 位数字,所以我需要找到 7 中每隔一个数字重复的数字。

像这样964632X5X7X3X - 重复数字

结果

502632959793 - TRUE
125632757773 - TRUE
475632353773 - FALSE

对于从 0 到 9 的每个数字,我都尝试过这样的操作:

\d{6}([9]\d[9]\d[9]\d)$

它没有用。

标签: regex

解决方案


您可以使用

^\d{6}(?=(\d))(?:\1\d){3}$

请参阅正则表达式演示。如果您需要在前六位数字之后容纳任何 x 到 y 数量的重复,您甚至可以稍后重构此正则表达式(只需替换{3}为 required{x}或带有所需阈值的量词){x,}{x,y}

正则表达式详细信息

  • ^- 字符串的开始
  • \d{6}- 前六位数
  • (?=(\d))- 将第七位数字捕获到第 1 组的正向前瞻
  • (?:\1\d){3}- 在第 1 组中捕获的数字和任何单个数字出现 3 次
  • $- 字符串结束

推荐阅读