O expresie regulată este o secvență de caractere care formează un model de căutare. Expresiile regulate sunt folosite în principal pentru căutarea, validarea și transformarea textelor sau șirurilor de caractere.
Aflați cum să validați numerele cardurilor de credit precum Mastercard, Visa Card și American Express cu expresii obișnuite.
Când să utilizați RegEx pentru a valida un număr de card de credit?
Serviciile terților taxează pentru fiecare încercare de tranzacție. Indiferent dacă tranzacția are succes sau nu, trebuie să plătiți taxele. În astfel de cazuri, doriți să refuzați numerele de card de credit care sunt în mod clar nevalide. Puteți valida rapid numerele cărților de credit folosind expresii regulate.
Dar nu vă puteți baza complet pe validarea expresiei regulate pentru caracteristica dvs. de plată. Emitenții de carduri își schimbă în mod regulat modelele de numere de card (introducerea de noi modele sau retragerea celor vechi), așa că metoda regex nu este cea mai robustă soluție. Deși puteți încerca să păstrați în partea de sus a modelelor de carduri dintr-o sursă ca
Wikipedia care este actualizat frecvent.De asemenea, puteți utiliza regex pentru a găsi rapid marca cardului pe care apoi o puteți utiliza pentru a afișa sigle sau etichete.
Expresiile regulate au mai multe cazuri practice de utilizare. Comanda Linux grep este probabil cel mai comun caz practic de utilizare a expresiei regex.
Codul folosit în acest proiect este disponibil în a Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.
RegEx pentru a valida numărul Mastercard
Un număr Mastercard este valabil dacă îndeplinește următoarele condiții:
- Șirul nu trebuie să conțină caractere speciale, alfabete sau spații albe.
- Numărul de caractere trebuie să fie egal cu 16.
- Șirul ar trebui să înceapă fie cu un interval de numere de 2 cifre (cuprinzând de la 51 la 55), fie cu un interval de numere de 4 cifre (de la 2221 la 2720).
- Dacă șirul începe cu un interval de numere de 2 cifre (între 51 și 55), următoarele 14 cifre trebuie să fie un număr între 0 și 9.
- Dacă șirul începe cu un interval de numere de 4 cifre (de la 2221 la 2720), următoarele 12 cifre trebuie să fie un număr între 0 și 9.
Următorul regex îndeplinește condițiile de mai sus și poate valida un număr 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}$
Dacă nu sunteți confortabil cu expresia de mai sus, verificați un ghid pentru începători pentru expresiile regulate primul.
Puteți utiliza expresia regex de mai sus pentru a valida numărul Mastercard în orice limbaj de programare. Iată cum se face acest lucru în Python:
import re
defcheckMasterCardNr(numar card):
regex = "^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.compilare (regex)dacă (re.căutare(r, cardNr)):
imprimare("Valabil")
altfel:
imprimare("Invalid")card1 = "5110762060017101"
checkMasterCardNo (card1)
card2 = "8632458236982734"
checkMasterCardNo (card2)
Rularea acestui cod va confirma că primul număr este valid, dar al doilea nu este:
RegEx pentru a valida numărul cardului Visa
Un număr de card Visa este valabil dacă îndeplinește următoarele condiții:
- Șirul nu trebuie să conțină caractere speciale, alfabete sau spații albe.
- Șirul ar trebui să înceapă cu 4.
- Numărul de caractere trebuie să fie egal cu 13 sau 16. Vechile carduri de viză au 13 caractere, iar cele noi au 16 caractere.
- Dacă numărul de caractere este egal cu 13, ultimele 12 cifre trebuie să fie un număr între 0 și 9.
- Dacă numărul de caractere este egal cu 16, ultimele 15 cifre trebuie să fie un număr între 0 și 9.
Următorul regex îndeplinește condițiile de mai sus și îl puteți folosi pentru a valida un număr de card Visa:
^4[0-9]{12}(?:[0-9]{3})?$
Mai jos este abordarea Python pentru validarea unui număr de card Visa:
import re
defverificațiVisaCardNr(numar card):
regex = "^4[0-9]{12}(?:[0-9]{3})?$"
r = re.compilare (regex)dacă (re.căutare(r, cardNr)):
imprimare("Valabil")
altfel:
imprimare("Invalid")card1 = "4539890694174109"
checkVisaCardNo (card1)
card2 = "49237429498"
checkVisaCardNo (card2)
Din nou, rezultatul confirmă că primul număr este valid, în timp ce al doilea este invalid:
RegEx pentru a valida numărul cardului American Express
Un număr de card American Express este valabil dacă îndeplinește următoarele condiții:
- Șirul nu trebuie să conțină caractere speciale, alfabete sau spații albe.
- Acest număr de caractere trebuie să fie egal cu 15.
- Șirul ar trebui să înceapă cu 34 sau 37.
- Ultimele 13 cifre trebuie să fie un număr între 0 și 9.
Următorul regex îndeplinește condițiile de mai sus și îl puteți folosi pentru a valida un număr de card American Express:
^3[47][0-9]{13}$
Puteți valida un număr de card American Express folosind următorul cod Python:
import re
defverifica American ExpressCardNr(numar card):
regex = "^3[47][0-9]{13}$"
r = re.compilare (regex)dacă (re.căutare(r, cardNr)):
imprimare("Valabil")
altfel:
imprimare("Invalid")card1 = "372831730491196"
checkAmericanExpressCardNo (card1)
card2 = "84732593847743042"
verificați American ExpressCardNo (card2)
Încă o dată, rezultatul confirmă că primul număr este valid, dar al doilea este invalid:
Aplicații ale expresiilor regulate
Puteți utiliza unele expresii regex destul de simple pentru a valida numerele comune ale cardurilor de credit. RegEx este un instrument puternic pe care îl puteți utiliza pentru preprocesarea datelor, potrivirea modelelor, extragerea datelor, analiza lexicală, procesarea limbajului natural, scrapingul web și multe altele. De asemenea, puteți utiliza expresii regulate în dezvoltarea web pentru a gestiona validarea formularelor HTML.