Регулярное выражение для повторного числа с символами
Я исключил возможные ложные срабатывания при обнаружении 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 цифры)