Wyrażenie regularne to ciąg znaków tworzący wzorzec wyszukiwania. Wyrażenia regularne są używane głównie do wyszukiwania, sprawdzania poprawności i przekształcania tekstów lub ciągów znaków.

Dowiedz się, jak weryfikować numery kart kredytowych, takich jak Mastercard, Visa Card i American Express, za pomocą wyrażeń regularnych.

Kiedy używać RegEx do weryfikacji numeru karty kredytowej?

Opłata za usługi stron trzecich za każdą próbę transakcji. Niezależnie od tego, czy transakcja się powiedzie, czy nie, musisz uiścić opłaty. W takich przypadkach chcesz odrzucić numery kart kredytowych, które są wyraźnie nieprawidłowe. Możesz szybko zweryfikować numery kart kredytowych za pomocą wyrażeń regularnych.

Ale nie możesz całkowicie polegać na sprawdzaniu poprawności wyrażeń regularnych dla swojej funkcji płatności. Wydawcy kart regularnie zmieniają wzory numerów kart (wprowadzając nowe lub wycofując stare), więc metoda regex nie jest najsolidniejszym rozwiązaniem. Chociaż możesz spróbować śledzić wzorce kart ze źródła takiego jak Wikipedii to jest często aktualizowane.

instagram viewer

Możesz także użyć wyrażenia regularnego, aby szybko znaleźć markę karty, której możesz następnie użyć do wyświetlenia logo lub etykiet.

Wyrażenia regularne mają kilka praktycznych zastosowań. Komenda grep Linuksa jest prawdopodobnie najczęstszym praktycznym przypadkiem użycia wyrażenia regularnego.

Kod użyty w tym projekcie jest dostępny w formacie Repozytorium GitHub i jest darmowy do użytku na licencji MIT.

RegEx w celu zweryfikowania numeru karty Mastercard

Numer Mastercard jest ważny, jeśli spełnia następujące warunki:

  1. Ciąg nie powinien zawierać żadnych znaków specjalnych, alfabetów ani spacji.
  2. Liczba znaków musi być równa 16.
  3. Ciąg powinien zaczynać się od 2-cyfrowego zakresu liczb (od 51 do 55) lub 4-cyfrowego zakresu liczb (od 2221 do 2720).
    • Jeśli ciąg zaczyna się od 2-cyfrowego zakresu liczb (od 51 do 55), następnych 14 cyfr musi być liczbą od 0 do 9.
    • Jeśli ciąg zaczyna się od 4-cyfrowego zakresu numerów (od 2221 do 2720), następnych 12 cyfr musi być liczbą z przedziału od 0 do 9.

Poniższe wyrażenie regularne spełnia powyższe warunki i może zweryfikować numer karty 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}$

Jeśli nie czujesz się komfortowo z powyższym wyrażeniem, sprawdź przewodnik po wyrażeniach regularnych dla początkujących Pierwszy.

Możesz użyć powyższego wyrażenia regularnego, aby zweryfikować numer Mastercard w dowolnym języku programowania. Oto jak to zrobić w Pythonie:

import Odnośnie

poksprawdź numer karty MasterCard(numer karty):
wyrażenie regularne = "^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 = re.compile (regex)

Jeśli (Odnośnie.szukaj(R, numer karty)):
wydrukować("Ważny")
w przeciwnym razie:
wydrukować("Nieważny")

karta1 = "5110762060017101"
checkMasterCardNr (karta1)

karta2 = "8632458236982734"
checkMasterCardNr (karta2)

Uruchomienie tego kodu potwierdzi, że pierwsza liczba jest prawidłowa, ale druga nie:

RegEx w celu zweryfikowania numeru karty Visa

Numer Karty Visa jest ważny, jeżeli spełnia następujące warunki:

  1. Ciąg nie powinien zawierać żadnych znaków specjalnych, alfabetów ani spacji.
  2. Ciąg powinien zaczynać się od 4.
  3. Liczba znaków musi być równa 13 lub 16. Stare karty wizowe mają 13 znaków, a nowe 16 znaków.
    • Jeśli liczba znaków jest równa 13, ostatnie 12 cyfr musi być liczbą z przedziału od 0 do 9.
    • Jeśli liczba znaków jest równa 16, ostatnie 15 cyfr musi być liczbą z przedziału od 0 do 9.

Poniższe wyrażenie regularne spełnia powyższe warunki i można go użyć do zweryfikowania numeru karty Visa:

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

Poniżej znajduje się podejście Pythona do sprawdzania poprawności numeru karty Visa:

import Odnośnie

pokSprawdź kartę VisaNr(numer karty):
wyrażenie regularne = "^4[0-9]{12}(?:[0-9]{3})?$"
r = re.compile (regex)

Jeśli (Odnośnie.szukaj(R, numer karty)):
wydrukować("Ważny")
w przeciwnym razie:
wydrukować("Nieważny")

karta1 = "4539890694174109"
czekVisaCardNr (karta1)

karta2 = "49237429498"
czekVisaCardNr (karta2)

Ponownie, dane wyjściowe potwierdzają, że pierwsza liczba jest prawidłowa, a druga jest nieprawidłowa:

RegEx w celu zweryfikowania numeru karty American Express

Numer karty American Express jest ważny, jeśli spełnia następujące warunki:

  1. Ciąg nie powinien zawierać żadnych znaków specjalnych, alfabetów ani spacji.
  2. Ta liczba znaków musi być równa 15.
  3. Ciąg powinien zaczynać się od 34 lub 37.
  4. Ostatnie 13 cyfr musi być liczbą z przedziału od 0 do 9.

Poniższe wyrażenie regularne spełnia powyższe warunki i można go użyć do zweryfikowania numeru karty American Express Card:

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

Możesz zweryfikować numer karty American Express Card za pomocą następującego kodu Pythona:

import Odnośnie

pokczek AmericanExpressCardNie(numer karty):
wyrażenie regularne = "^3[47][0-9]{13}$"
r = re.compile (regex)

Jeśli (Odnośnie.szukaj(R, numer karty)):
wydrukować("Ważny")
w przeciwnym razie:
wydrukować("Nieważny")

karta1 = "372831730491196"
checkAmericanExpressCardNie (karta1)

karta2 = "84732593847743042"
sprawdź AmericanExpressCardNie (karta2)

Po raz kolejny dane wyjściowe potwierdzają, że pierwsza liczba jest prawidłowa, ale druga jest nieprawidłowa:

Zastosowania wyrażeń regularnych

Możesz użyć dość prostego wyrażenia regularnego, aby zweryfikować popularne numery kart kredytowych. RegEx to potężne narzędzie, którego można używać do wstępnego przetwarzania danych, dopasowywania wzorców, ekstrakcji danych, analizy leksykalnej, przetwarzania języka naturalnego, skrobania stron internetowych i nie tylko. Możesz także używać wyrażeń regularnych w programowaniu stron internetowych do obsługi sprawdzania poprawności formularzy HTML.