Regex не ловит непрерывный номер кредитной карты - PullRequest
0 голосов
/ 23 апреля 2020

Мое регулярное выражение соответствует, когда число имеет <space> или "-", если все 16 или git номеров карт не имеют <space> или "-", тогда оно не совпадает.

(4\d{3}[\s\-\\]\d{4}[\s\-\\]\d{4}[\s\-\\]\d{4})

Это соответствует 4444-0000-0000 0000 Но это не соответствует `4444000000000000

1 Ответ

1 голос
/ 23 апреля 2020

Сделать разделители необязательными, кодируя ? после класса символов:

\b(4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4})\b

См. живая демонстрация .

Я добавил границы слов \b с обоих концов он не совпадает, например, с первыми 16 цифрами 40001111222233338.

кстати, вы можете кодировать его более кратко, повторяя [\s-]?\d{4} 3 раза, например:

\b(4\d{3}([\s-]?\d{4}){3})\b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...