Регулярное выражение для валидация номера кредитной карты?

Валидация номера кредитной карты с использованием регулярных выражений может быть сложной задачей из-за различий в форматах номеров карт разных банков и платежных систем. Но вы можете использовать общий паттерн для проверки формата номера кредитной карты.

Ниже представлено регулярное выражение, которое проверяет формат номера кредитной карты с использованием Luhn-алгоритма (алгоритма контрольной суммы):

^(?:4[0-9]{12}(?:[0-9]{3})? # Visa | 5[1-5][0-9]{14} # MasterCard | 3[47][0-9]{13} # American Express | 6(?:011|5[0-9][0-9])[0-9]{12} # Discover | 3(?:0[0-5]|[68][0-9])[0-9]{11} # Diners Club | (?:2131|1800|35\d{3})\d{11} # JCB )$

Это регулярное выражение позволяет проверить номера кредитных карт следующих платежных систем: Visa, MasterCard, American Express, Discover, Diners Club и JCB. Оно проверяет, что номер карты соответствует формату, и применяет Luhn-алгоритм для проверки контрольной суммы.

Обратите внимание, что это регулярное выражение проверяет только формат номера карты и его контрольную сумму, но не проверяет, действительно ли карта с таким номером существует или действительна. Для более надежной валидации кредитных карт рекомендуется также использовать другие методы, такие как проверка наличия карты в базе данных банка или платежной системы.