Regularni izraz je niz znakova koji tvori obrazac pretraživanja. Regularni izrazi se uglavnom koriste za pretraživanje, provjeru valjanosti i transformaciju tekstova ili nizova.

Naučite kako potvrditi brojeve kreditnih kartica kao što su Mastercard, Visa Card i American Express s regularnim izrazima.

Kada koristiti RegEx za potvrdu broja kreditne kartice?

Usluge trećih strana naplaćuju svaki pokušaj transakcije. Bez obzira je li transakcija uspješna ili ne, morate platiti troškove. U takvim slučajevima želite odbiti brojeve kreditnih kartica koji su očito nevažeći. Brojeve kreditnih kartica možete brzo potvrditi pomoću regularnih izraza.

Ali ne možete se u potpunosti osloniti na provjeru regularnog izraza za svoju značajku plaćanja. Izdavatelji kartica redovito mijenjaju obrasce brojeva kartica (uvodeći nove uzorke ili povlačeći stare), tako da regex metoda nije najrobusnije rješenje. Iako možete pokušati pratiti uzorke kartica iz izvora poput Wikipedia koji se često ažurira.

Također možete koristiti regularni izraz za brzo pronalaženje marke kartice koju zatim možete koristiti za prikaz logotipa ili naljepnica.

instagram viewer

Regularni izrazi imaju nekoliko praktičnih slučajeva upotrebe. Linux grep naredba je vjerojatno najčešći slučaj praktične upotrebe regularnog izraza.

Kod korišten u ovom projektu dostupan je u a GitHub spremište i besplatan je za korištenje pod MIT licencom.

RegEx za potvrdu broja Mastercard kartice

Mastercard broj je valjan ako zadovoljava sljedeće uvjete:

  1. Niz ne smije sadržavati posebne znakove, slova ili razmake.
  2. Broj znakova mora biti jednak 16.
  3. Niz treba započeti dvoznamenkastim rasponom brojeva (u rasponu od 51 do 55) ili 4-znamenkastim rasponom brojeva (u rasponu od 2221 do 2720).
    • Ako niz počinje dvoznamenkastim rasponom brojeva (u rasponu od 51 do 55), sljedećih 14 znamenki mora biti broj između 0 i 9.
    • Ako niz počinje 4-znamenkastim rasponom brojeva (u rasponu od 2221 do 2720), sljedećih 12 znamenki mora biti broj između 0 i 9.

Sljedeći regularni izraz zadovoljava gore navedene uvjete i može potvrditi broj Mastercard kartice:

^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}$

Ako vam se gornji izraz ne sviđa, provjerite vodič za početnike kroz regularne izraze prvi.

Možete upotrijebiti gornji regularni izraz za provjeru valjanosti Mastercard broja u bilo kojem programskom jeziku. Evo kako to učiniti u Pythonu:

uvoz ponovno

defcheckMasterCardNo(br. kartice):
regularni izraz = "^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)

ako (ponovno.traži(r, kartica br)):
ispis("Valjano")
drugo:
ispis("Ne vrijedi")

kartica1 = "5110762060017101"
checkMasterCardNo (card1)

kartica2 = "8632458236982734"
checkMasterCardNo (card2)

Pokretanje ovog koda potvrdit će da je prvi broj valjan, ali drugi nije:

RegEx za potvrdu broja Visa kartice

Broj Visa kartice je valjan ako zadovoljava sljedeće uvjete:

  1. Niz ne smije sadržavati posebne znakove, slova ili razmake.
  2. Niz bi trebao početi s 4.
  3. Broj znakova mora biti jednak 13 ili 16. Stare visa kartice imaju 13, a nove 16 znakova.
    • Ako je broj znakova jednak 13, zadnjih 12 znamenki mora biti broj između 0 i 9.
    • Ako je broj znakova jednak 16, zadnjih 15 znamenki mora biti broj između 0 i 9.

Sljedeći regularni izraz zadovoljava gore navedene uvjete i možete ga koristiti za provjeru valjanosti broja Visa kartice:

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

Ispod je Python pristup za provjeru valjanosti broja Visa kartice:

uvoz ponovno

defprovjeriteVisaCardNo(br. kartice):
regularni izraz = "^4[0-9]{12}(?:[0-9]{3})?$"
r = re.compile (regex)

ako (ponovno.traži(r, kartica br)):
ispis("Valjano")
drugo:
ispis("Ne vrijedi")

kartica1 = "4539890694174109"
provjeriteVisaCardNo (card1)

kartica2 = "49237429498"
provjeriteVisaCardNo (card2)

Opet, izlaz potvrđuje da je prvi broj važeći dok je drugi nevažeći:

RegEx za potvrdu broja American Express kartice

Broj American Express kartice valjan je ako zadovoljava sljedeće uvjete:

  1. Niz ne smije sadržavati posebne znakove, slova ili razmake.
  2. Ovaj broj znakova mora biti jednak 15.
  3. Niz treba započeti s 34 ili 37.
  4. Posljednjih 13 znamenki mora biti broj između 0 i 9.

Sljedeći regularni izraz zadovoljava gore navedene uvjete i možete ga koristiti za provjeru valjanosti broja American Express kartice:

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

Broj American Express kartice možete potvrditi pomoću sljedećeg Python koda:

uvoz ponovno

defcheckAmericanExpressCardNo(br. kartice):
regularni izraz = "^3[47][0-9]{13}$"
r = re.compile (regex)

ako (ponovno.traži(r, kartica br)):
ispis("Valjano")
drugo:
ispis("Ne vrijedi")

kartica1 = "372831730491196"
checkAmericanExpressCardNo (card1)

kartica2 = "84732593847743042"
checkAmericanExpressCardNo (card2)

Još jednom, izlaz potvrđuje da je prvi broj valjan, ali drugi nije valjan:

Primjene regularnih izraza

Možete upotrijebiti neki prilično jednostavan regularni izraz za provjeru uobičajenih brojeva kreditnih kartica. RegEx je moćan alat koji možete koristiti za prethodnu obradu podataka, podudaranje uzoraka, ekstrakciju podataka, leksičku analizu, obradu prirodnog jezika, web skrapiranje i više. Također možete koristiti regularne izraze u web razvoju za rukovanje provjerom valjanosti HTML obrazaca.