Регулярное выражение — это последовательность символов, формирующая шаблон поиска. Регулярные выражения в основном используются для поиска, проверки и преобразования текстов или строк.

Узнайте, как проверять номера кредитных карт, таких как Mastercard, Visa Card и American Express, с помощью регулярных выражений.

Когда использовать RegEx для проверки номера кредитной карты?

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

Но вы не можете полностью полагаться на проверку регулярного выражения для своей платежной функции. Эмитенты карт регулярно меняют шаблоны номеров своих карт (вводят новые шаблоны или удаляют старые), поэтому метод регулярных выражений не является самым надежным решением. Хотя вы можете попытаться следить за шаблонами карт из такого источника, как Википедия это часто обновляется.

instagram viewer

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

Регулярные выражения имеют несколько практических вариантов использования. Команда Linux grep вероятно, наиболее распространенный практический случай использования регулярных выражений.

Код, используемый в этом проекте, доступен в Репозиторий GitHub и вы можете использовать его бесплатно по лицензии MIT.

RegEx для проверки номера Mastercard

Номер Mastercard действителен, если он удовлетворяет следующим условиям:

  1. Строка не должна содержать никаких специальных символов, букв алфавита или пробелов.
  2. Количество символов должно быть равно 16.
  3. Строка должна начинаться либо с 2-значного диапазона чисел (в диапазоне от 51 до 55), либо с 4-значного диапазона чисел (в диапазоне от 2221 до 2720).
    • Если строка начинается с двузначного диапазона чисел (от 51 до 55), следующие 14 цифр должны быть числом от 0 до 9.
    • Если строка начинается с 4-значного диапазона чисел (от 2221 до 2720), следующие 12 цифр должны быть числами от 0 до 9.

Следующее регулярное выражение удовлетворяет вышеуказанным условиям и может проверить номер Mastercard:

^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$

Если вам не нравится приведенное выше выражение, проверьте руководство для начинающих по регулярным выражениям первый.

Вы можете использовать приведенное выше регулярное выражение для проверки номера Mastercard на любом языке программирования. Вот как это сделать в Python:

Импортировать ре

дефcheckMasterCardНет(карта №):
регулярное выражение = "^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$"
r = перекомпилировать (регулярное выражение)

если (ре.поиск(р, номер карты)):
Распечатать("Действительный")
еще:
Распечатать("Недействительно")

карта1 = "5110762060017101"
checkMasterCardNo (карта1)

карта2 = "8632458236982734"
checkMasterCardNo (карта2)

Выполнение этого кода подтвердит, что первое число допустимо, а второе — нет:

RegEx для проверки номера карты Visa

Номер карты Visa действителен, если он удовлетворяет следующим условиям:

  1. Строка не должна содержать никаких специальных символов, букв алфавита или пробелов.
  2. Строка должна начинаться с 4.
  3. Количество символов должно быть равно 13 или 16. Старые карты Visa имеют 13 символов, а новые — 16 символов.
    • Если количество символов равно 13, последние 12 цифр должны быть числом от 0 до 9.
    • Если количество символов равно 16, последние 15 цифр должны быть числом от 0 до 9.

Следующее регулярное выражение удовлетворяет вышеуказанным условиям, и вы можете использовать его для проверки номера карты Visa:

^4[0-9]{12}(?:[0-9]{3})?$

Ниже приведен подход Python для проверки номера карты Visa:

Импортировать ре

дефпроверитьVisaCardНет(карта №):
регулярное выражение = "^4[0-9]{12}(?:[0-9]{3})?$"
r = перекомпилировать (регулярное выражение)

если (ре.поиск(р, номер карты)):
Распечатать("Действительный")
еще:
Распечатать("Недействительно")

карта1 = "4539890694174109"
checkVisaCardNo (card1)

карта2 = "49237429498"
checkVisaCardNo (карта2)

Опять же, вывод подтверждает, что первое число допустимо, а второе — неверно:

RegEx для проверки номера карты American Express

Номер карты American Express действителен, если он удовлетворяет следующим условиям:

  1. Строка не должна содержать никаких специальных символов, букв алфавита или пробелов.
  2. Это количество символов должно быть равно 15.
  3. Строка должна начинаться с 34 или 37.
  4. Последние 13 цифр должны быть числом от 0 до 9.

Следующее регулярное выражение удовлетворяет вышеуказанным условиям, и вы можете использовать его для проверки номера карты American Express:

^3[47][0-9]{13}$

Вы можете проверить номер карты American Express, используя следующий код Python:

Импортировать ре

дефcheckAmericanExpressCardНет(карта №):
регулярное выражение = "^3[47][0-9]{13}$"
r = перекомпилировать (регулярное выражение)

если (ре.поиск(р, номер карты)):
Распечатать("Действительный")
еще:
Распечатать("Недействительно")

карта1 = "372831730491196"
checkAmericanExpressCardNo (card1)

карта2 = "84732593847743042"
checkAmericanExpressCardNo (card2)

Еще раз вывод подтверждает, что первое число допустимо, а второе — неверно:

Применение регулярных выражений

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