Как правильно проверить кредитную карту с помощью регулярного выражения? Если какой из них использовать, то в Интернете их масса. Если нет, как проверить?
Проверка кредитной карты с помощью регулярного выражения?
Ответы (5)
Как я могу использовать номера кредитных карт, содержащие пробелы? охватывает все, что вам может понадобиться.
См. Эту ссылку. Поиск или проверка номеров кредитных карт с помощью регулярных выражений.
- Visa: ^ 4 [0-9] {12} (?: [0-9] {3})? $ Все номера карт Visa начинаются с 4. Новые карты имеют 16 цифр. На старых картах их 13.
- MasterCard: ^ 5 [1-5] [0-9] {14} $ Все номера MasterCard начинаются с цифр от 51 до 55. Все они состоят из 16 цифр.
- American Express: ^ 3 [47] [0-9] {13} Номера карт American Express на сумму $ начинаются с 34 или 37 и состоят из 15 цифр.
- Diners Club: ^ 3 (?: 0 [0-5] | [68] [0-9]) [0-9] {11} Номера карт $ Diners Club начинаются с 300 по 305, 36 или 38. У всех по 14. цифры. Существуют карты Diners Club, которые начинаются с 5 и имеют 16 цифр. Это совместное предприятие Diners Club и MasterCard, и их следует обрабатывать как MasterCard.
- Discover: ^ 6 (?: 011 | 5 [0-9] {2}) [0-9] {12} $ Номера карт Discover начинаются с 6011 или 65. Все они состоят из 16 цифр.
- JCB: ^ (?: 2131 | 1800 | 35 \ d {3}) \ d {11} Карты $ JCB, начинающиеся с 2131 или 1800, имеют 15 цифр. Карты JCB, начинающиеся с 35, имеют 16 цифр.
Пока.
^6(?:0110[0-9]|011[2-4][0-9]|01174|0117[7-9]|0118[6-9]|0119[0-9]|4[4-9][0-9]{3}|5[0-9]{4})[0-9]{10}$
- person realgt; 04.05.2012
Я думаю, вы ищете алгоритм Луна. Это простая формула контрольной суммы, используемая для проверки различных идентификационных номеров.
Это зависит от того, насколько точной должна быть предварительная проверка. Чтобы проверить все, что вы можете, вам нужно вычислить, какой должна быть последняя цифра карты, и сравнить с тем, что введено, чего не может сделать RegEx.
Алгоритм и другие сведения см. В этой ссылке, где также представлен список распространенных префиксов номеров, вы могли бы подтвердить против.
-- Редактировать:
На самом деле, я немного не согласен с собой и согласен с cletus. Подтвердите как можно больше (не вдаваясь в подробности о конкретных типах кредитных карт [IMHO]) перед отправкой. И само собой разумеется (надеюсь), что эта проверка должна выполняться в JavaScript, чтобы сделать это быстро, а затем на сервере для двойной проверки (и для людей с ограниченными возможностями JavaScript).
- Предыдущий ответ:
Не беспокойтесь; просто позвольте провайдеру подтвердить это, когда вы действительно попытаетесь произвести оплату. Нет законной причины пытаться проверить это самостоятельно. Вы можете использовать this, если действительно хотите.