Regularni izraz je zaporedje znakov, ki tvori iskalni vzorec. Regularni izrazi se večinoma uporabljajo za iskanje, preverjanje in preoblikovanje besedil ali nizov.

Naučite se potrditi številke kreditnih kartic, kot so Mastercard, Visa Card in American Express, z regularnimi izrazi.

Kdaj uporabiti RegEx za potrditev številke kreditne kartice?

Storitve tretjih oseb zaračunajo vsak poskus transakcije. Ne glede na to, ali je transakcija uspešna ali ne, morate plačati stroške. V takih primerih želite zavrniti številke kreditnih kartic, ki so očitno neveljavne. Številke kreditnih kartic lahko hitro potrdite z regularnimi izrazi.

Vendar se ne morete popolnoma zanesti na preverjanje regularnih izrazov za vašo plačilno funkcijo. Izdajatelji kartic redno spreminjajo vzorce številk kartic (uvajajo nove vzorce ali umikajo stare), zato metoda regex ni najbolj robustna rešitev. Čeprav lahko poskusite spremljati vzorce kartic iz vira, kot je Wikipedia ki se pogosto posodablja.

Uporabite lahko tudi regex za hitro iskanje blagovne znamke kartice, ki jo lahko nato uporabite za prikaz logotipov ali nalepk.

Regularni izrazi imajo več praktičnih primerov uporabe. Ukaz Linux grep je verjetno najpogostejši praktični primer uporabe regularnega izraza.

Koda, uporabljena v tem projektu, je na voljo v a Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.

RegEx za potrditev številke Mastercard

Številka Mastercard je veljavna, če izpolnjuje naslednje pogoje:

  1. Niz ne sme vsebovati posebnih znakov, črk ali presledkov.
  2. Število znakov mora biti enako 16.
  3. Niz se mora začeti z 2-mestnim obsegom števil (od 51 do 55) ali 4-mestnim obsegom števil (od 2221 do 2720).
    • Če se niz začne z dvomestnim obsegom številk (od 51 do 55), mora biti naslednjih 14 števk število med 0 in 9.
    • Če se niz začne s 4-mestnim obsegom številk (od 2221 do 2720), mora biti naslednjih 12 števk število med 0 in 9.

Naslednji regularni izraz izpolnjuje zgornje pogoje in lahko potrdi številko 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}$

Če vam zgornji izraz ni všeč, preverite začetniški vodnik po regularnih izrazih prvi.

Z zgornjim regularnim izrazom lahko potrdite številko Mastercard v katerem koli programskem jeziku. Tukaj je opisano, kako to storite v Pythonu:

uvoz re

defcheckMasterCardŠt(št. kartice):
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.compile (regex)

če (re.Iskanje(r, kartica št)):
natisni("Veljavno")
drugače:
natisni("Ni veljaven")

kartica1 = "5110762060017101"
checkMasterCardNo (card1)

kartica2 = "8632458236982734"
checkMasterCardNo (card2)

Zagon te kode bo potrdil, da je prva številka veljavna, druga pa ne:

RegEx za potrditev številke kartice Visa

Številka kartice Visa je veljavna, če izpolnjuje naslednje pogoje:

  1. Niz ne sme vsebovati posebnih znakov, črk ali presledkov.
  2. Niz se mora začeti s 4.
  3. Število znakov mora biti enako 13 ali 16. Stare kartice Visa imajo 13 znakov, nove pa 16 znakov.
    • Če je število znakov enako 13, mora biti zadnjih 12 števk število med 0 in 9.
    • Če je število znakov enako 16, mora biti zadnjih 15 števk število med 0 in 9.

Naslednji regularni izraz izpolnjuje zgornje pogoje in ga lahko uporabite za potrditev številke kartice Visa:

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

Spodaj je pristop Python za preverjanje številke kartice Visa:

uvoz re

defpreveri VisaCardŠt(št. kartice):
regex = "^4[0-9]{12}(?:[0-9]{3})?$"
r = re.compile (regex)

če (re.Iskanje(r, kartica št)):
natisni("Veljavno")
drugače:
natisni("Ni veljaven")

kartica1 = "4539890694174109"
preveri VisaCardNo (card1)

kartica2 = "49237429498"
preveri VisaCardNo (card2)

Ponovno izhod potrdi, da je prva številka veljavna, medtem ko je druga neveljavna:

RegEx za preverjanje številke kartice American Express

Številka kartice American Express je veljavna, če izpolnjuje naslednje pogoje:

  1. Niz ne sme vsebovati posebnih znakov, črk ali presledkov.
  2. To število znakov mora biti enako 15.
  3. Niz naj se začne s 34 ali 37.
  4. Zadnjih 13 števk mora biti število med 0 in 9.

Naslednji regularni izraz izpolnjuje zgornje pogoje in ga lahko uporabite za potrditev številke kartice American Express:

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

Številko kartice American Express lahko potrdite z naslednjo kodo Python:

uvoz re

defcheckAmericanExpressCardŠt(št. kartice):
regex = "^3[47][0-9]{13}$"
r = re.compile (regex)

če (re.Iskanje(r, kartica št)):
natisni("Veljavno")
drugače:
natisni("Ni veljaven")

kartica1 = "372831730491196"
checkAmericanExpressCardNo (card1)

kartica2 = "84732593847743042"
checkAmericanExpressCardNo (card2)

Še enkrat izhod potrdi, da je prva številka veljavna, druga pa neveljavna:

Uporaba regularnih izrazov

Za preverjanje pogostih številk kreditnih kartic lahko uporabite nekaj dokaj preprostih regularnih izrazov. RegEx je zmogljivo orodje, ki ga lahko uporabite za predhodno obdelavo podatkov, ujemanje vzorcev, ekstrakcijo podatkov, leksikalno analizo, obdelavo naravnega jezika, spletno strganje in drugo. Za preverjanje veljavnosti obrazcev HTML lahko uporabite tudi regularne izraze v spletnem razvoju.