Регулярное выражение для повторного числа с символами

Я исключил возможные ложные срабатывания при обнаружении SSN. Например:111111111, 222222222 и т. Д., Но я начал получать ложные отзывы о тех же ложных ssn. это 111-11-1111 и 222-22-2222 и т. д. На данный момент я использую регулярное выражение \b111[ -]11[ -]1111\b, чтобы избежать ложных срабатываний. Есть ли способ, которым я могу иметь точное регулярное выражение для обнаружения повторяющихся чисел с символами? Это поможет мне использовать одно регулярное выражение вместо десятичного (0-9).

2 ответа

Как насчет этого?

^([0-9])\1{2}[-]\1{2}[-]\1{4}$

Соответствует любому числу, и \1 относится к первой группе захвата, то есть к первому номеру.

Подробнее:

  • соответствует первому числу
  • повторяет это первое совпадение два раза, чтобы получить блок из 3 цифр
  • соответствует тире
  • повторяет первый номер два раза
  • соответствует тире
  • повторяет первый номер четыре раза

Если есть более эффективный способ, я еще не подумал об этом

(?=([0\-]|[1\-]|[2\-]|[3\-]|[4\-]|[5\-]|[6\-]|[7\-]|[8\-]|[9\-]|){11})\d{3}-\d{2}-\d{4}
  • Вместо того, чтобы вводить все 10 повторяющихся шаблонов, можно использовать немного более короткий метод использования заглядывания, чтобы убедиться, что шаблон содержит только 11 символов, содержащих только определенное число и тире.

  • Конечный паттерн \d{3}-\d{2}-\d{4} будет гарантировать, что шаблон: (3 цифры)-(2 цифры)-(4 цифры)

Другие вопросы по тегам