Wyszukiwanie lub weryfikacja numerów kart kredytowych

RegexMagic-generowanie wyrażeń regularnych pasujących do numerów kart kredytowych

za pomocą kilku prostych wyrażeń regularnych możesz łatwo sprawdzić, czy twój Klient wprowadził prawidłowy numer karty kredytowej w formularzu zamówienia. Możesz nawet określić rodzaj używanej karty kredytowej. Każdy wystawca karty ma swój własny zakres numerów kart, identyfikowany przez pierwsze 4 cyfry.

możesz użyć nieco innego wyrażenia regularnego, aby znaleźć numery kart kredytowych lub sekwencje liczbowe, które mogą być numerami kart kredytowych, w większych dokumentach. Może to być bardzo przydatne, aby udowodnić w audycie bezpieczeństwa, że nie jesteś niewłaściwie ujawniając dane finansowe swoich klientów.

zaczniemy od Formularza Zamówienia.

usuwanie spacji i myślników

pierwszym krokiem jest usunięcie wszystkich niecyfrowych z numeru karty wprowadzonego przez Klienta. Fizyczne karty kredytowe mają spacje w numerze karty do grupowania cyfr, co ułatwia ludziom czytanie lub wpisywanie. Tak więc formularz zamówienia powinien przyjmować numery kart ze spacjami lub myślnikami w nich.

aby usunąć wszystkie Nie-cyfry z numeru karty, po prostu użyj funkcji „Zamień wszystko” w języku skryptowym, aby wyszukać wyrażenie regularne + i zastąpić je niczym. Jeśli chcesz zastąpić tylko spacje i myślniki, możesz użyć +. Jeśli to wyrażenie regularne wygląda dziwnie, pamiętaj, że w klasie znaków myślnik jest dosłowny, gdy występuje tuż przed nawiasem zamykającym (lub zaraz po nawiasie otwierającym lub karetce negującej).

Jeśli zastanawiasz się, do czego służy plus: to za wydajność. Jeśli Dane wejściowe mają kolejne cyfry, takie jak 1===2, to + Dopasowuje trzy znaki równości jednocześnie i usuwa je w jednym zastępstwie. Bez plusa potrzebne byłyby trzy zamienniki. W tym przypadku oszczędności wynoszą tylko kilka mikrosekund. Ale to dobry nawyk, aby utrzymać wydajność regex w tyle umysłu. Chociaż oszczędności są tutaj Minimalne, podobnie jak wysiłek wpisania dodatkowego plusa.

sprawdzanie numerów kart kredytowych w formularzu zamówienia

sprawdzanie numerów kart kredytowych jest idealnym rozwiązaniem dla wyrażeń regularnych. Są to po prostu Sekwencja 13 do 16 cyfr, z kilkoma konkretnymi cyframi na początku, które identyfikują wystawcę karty. Możesz użyć określonych wyrażeń regularnych poniżej, aby ostrzec klientów, gdy próbują użyć karty, której nie akceptujesz, lub skierować zamówienia za pomocą różnych kart do różnych procesorów. Wszystkie te wyrażenia zostały wzięte z biblioteki RegexBuddy ’ ego.

  • Wiza: ^4{12}(?:{3})?$ Wszystkie numery kart Visa zaczynają się od 4. Nowe karty mają 16 cyfr. Stare karty mają 13.
  • MasterCard: ^(?:5{2}|222|22|2{2}|27|2720){12}$ numery MasterCard zaczynają się od numerów od 51 do 55 lub od 2221 do 2720. Wszystkie mają 16 cyfr.
  • American Express: ^3{13}$ numery kart American Express zaczynają się od 34 lub 37 i mają 15 cyfr.
  • Diners Club: ^3 (?: 0/) {11}$ numery kart Diners Club zaczynają się od 300 do 305, 36 lub 38. Wszystkie mają 14 cyfr. Istnieją karty Diners Club, które zaczynają się od 5 i mają 16 cyfr. Są to wspólne przedsięwzięcie Diners Club i MasterCard i powinny być przetwarzane jak MasterCard.
  • Discover: ^6 (?:011/5{2}){12}$ numery kart rozpoczynają się od 6011 lub 65. Wszystkie mają 16 cyfr.
  • JCB: ^(?: 2131/1800/35\d{3})\D{11} Karty JCB zaczynające się od 2131 lub 1800 mają 15 cyfr. Karty JCB zaczynające się od 35 mają 16 cyfr.

jeśli chcesz tylko sprawdzić, czy numer karty wygląda na prawidłowy, bez określania marki, możesz połączyć powyższe sześć wyrażeń regularnych za pomocą alternacji. Grupa nie przechwytująca stawia kotwice poza alternacją. Wolne odstępy pozwalają na komentarze i wyrażenie regularne, aby pasowały do szerokości tej strony.

^(?:4{12}(?:{3})? # Wiza
/(?: 5{2} # MasterCard
| 222/22/2{2}|27|2720){12}
| 3{13} # American Express
| 3(?: 0/) {11} # Diners Club
/ 6 (?:011/5{2}){12} # Discover
/ (?:2131/1800/35\d{3})\D{11} # JCB
)$

te wyrażenia regularne łatwo wychwycą liczby, które są nieprawidłowe, ponieważ klient wprowadził zbyt wiele lub zbyt mało cyfr. Nie wyłapują liczb z błędnymi cyframi. W tym celu należy postępować zgodnie z algorytmem Luhna, czego nie można zrobić za pomocą wyrażenia regularnego. I oczywiście, nawet jeśli numer jest matematycznie poprawny, nie oznacza to, że wydano kartę z tym numerem lub że na koncie są pieniądze. Zaletą lub wyrażeniem regularnym jest to, że możesz umieścić go w trochę JavaScript, aby natychmiast sprawdzić oczywiste błędy, zamiast zmuszać klienta do oczekiwania 30 sekund na procesor karty kredytowej, aby nie wykonać zamówienia. A jeśli procesor karty pobiera opłaty za nieudane transakcje, naprawdę chcesz zaimplementować zarówno regex, jak i walidację Luhn.

znajdowanie numerów kart kredytowych w dokumentach

dzięki dwóm prostym modyfikacjom można użyć dowolnego z powyższych wyrażeń regularnych, aby znaleźć numery kart w większych dokumentach. Po prostu zamień karetkę i dolara na granicę słowa, jak w \b4{12}(?:{3})?\B.

jeśli planujesz przeszukiwać duży Serwer dokumentów, prostsze Wyrażenie regularne przyspieszy wyszukiwanie. Jeśli Twoja firma nie używa 16-cyfrowych numerów do innych celów, będziesz mieć kilka fałszywych alarmów. Regex \b\d{13,16}\B znajdzie dowolny ciąg od 13 do 16 cyfr.

podczas wyszukiwania dysku twardego pełnego plików nie można najpierw usunąć spacji i myślników, tak jak można to zrobić podczas sprawdzania pojedynczego numeru karty. Aby znaleźć numery kart ze spacjami lub myślnikami, użyj \b(?: \d*?) {13,16} \ B. to wyrażenie regularne pozwala na dowolną ilość spacji i myślników w dowolnym miejscu liczby. To naprawdę jedyny sposób. Visa i MasterCard umieszczają cyfry w zestawach po 4, podczas gdy Amex i Discover używają grup 4, 5 i 6 cyfr. Ludzie wprowadzający liczby mogą mieć jeszcze inne pomysły.

Przekaż darowiznę

czy ta strona właśnie uratowała Ci podróż do księgarni? Przekaż darowiznę na wsparcie tej strony, a otrzymasz dożywotni dostęp do tej strony bez reklam!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post Zostań technikiem Weterynarii w Wisconsin
Next post Sztuka procesu a Sztuka produktu w edukacji wczesnoszkolnej