Regulaaravaldis on märkide jada, mis moodustab otsingumustri. Regulaaravaldisi kasutatakse peamiselt tekstide või stringide otsimiseks, kinnitamiseks ja teisendamiseks.

Siit saate teada, kuidas regulaaravaldiste abil kontrollida krediitkaardinumbreid, nagu Mastercard, Visa Card ja American Express.

Millal kasutada krediitkaardinumbri kinnitamiseks regExi?

Kolmanda osapoole teenuste tasu võetakse iga tehingukatse eest. Olenemata sellest, kas tehing õnnestub või mitte, peate tasuma tasud. Sellistel juhtudel soovite keelduda krediitkaardinumbritest, mis on selgelt kehtetud. Krediitkaardinumbreid saate kiiresti kontrollida regulaaravaldiste abil.

Kuid te ei saa täielikult tugineda oma maksefunktsiooni regulaaravaldise valideerimisele. Kaardi väljastajad muudavad regulaarselt oma kaardinumbrite mustreid (võtvad sisse uusi mustreid või eemaldavad vanu), seega pole regex-meetod kõige jõulisem lahendus. Kuigi võite proovida hoida peal kaardi mustrid allikast nagu Vikipeedia mida sageli uuendatakse.

instagram viewer

Regexi abil saate kiiresti leida kaardi kaubamärgi, mida saate seejärel kasutada logode või siltide kuvamiseks.

Regulaaravaldistel on mitu praktilist kasutusjuhtu. Linuxi grep käsk on regexi ilmselt kõige levinum praktiline kasutusjuht.

Selles projektis kasutatav kood on saadaval a GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

RegEx Mastercardi numbri kinnitamiseks

Mastercardi number kehtib, kui see vastab järgmistele tingimustele:

  1. String ei tohi sisaldada erimärke, tähestikku ega tühikuid.
  2. Tähemärkide arv peab olema 16.
  3. String peaks algama kas 2-kohalise numbrivahemikuga (vahemikus 51–55) või 4-kohalise numbrivahemikuga (vahemikus 2221–2720).
    • Kui string algab 2-kohalise numbrivahemikuga (vahemikus 51 kuni 55), peavad järgmised 14 numbrit olema arv vahemikus 0 kuni 9.
    • Kui string algab 4-kohalise numbrivahemikuga (vahemikus 2221 kuni 2720), peavad järgmised 12 numbrit olema arv vahemikus 0 kuni 9.

Järgmine regex vastab ülaltoodud tingimustele ja võib kinnitada Mastercardi numbri:

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

Kui te ei ole ülaltoodud väljendiga rahul, vaadake regulaaravaldiste juhend algajatele esiteks.

Ülaltoodud regexit saate kasutada Mastercardi numbri kinnitamiseks mis tahes programmeerimiskeeles. Pythonis saate seda teha järgmiselt.

importida re

defcheckMasterCardNo(kaardi nr):
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 = uuesti.kompileerimine (regex)

kui (re.otsing(r, kaardi nr)):
print("Kehtiv")
muidu:
print("Ei kehti")

kaart1 = "5110762060017101"
checkMasterCardNo (kaart1)

kaart2 = "8632458236982734"
checkMasterCardNo (kaart2)

Selle koodi käivitamine kinnitab, et esimene number on kehtiv, kuid teine ​​mitte:

RegEx Visa kaardi numbri kinnitamiseks

Visa kaardi number on kehtiv, kui see vastab järgmistele tingimustele:

  1. String ei tohi sisaldada erimärke, tähestikku ega tühikuid.
  2. String peaks algama 4-ga.
  3. Tähemärkide arv peab olema 13 või 16. Vanadel viisakaartidel on 13 ja uutel 16 tähemärki.
    • Kui märkide arv on 13, peavad viimased 12 numbrit olema arv vahemikus 0 kuni 9.
    • Kui märkide arv on 16, peavad viimased 15 numbrit olema arv vahemikus 0 kuni 9.

Järgmine regex vastab ülaltoodud tingimustele ja saate seda kasutada Visa kaardi numbri kinnitamiseks:

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

Allpool on Pythoni lähenemisviis Visa kaardi numbri kinnitamiseks:

importida re

defcheckVisaCardNo(kaardi nr):
regex = "^4[0-9]{12}(?:[0-9]{3})?$"
r = uuesti.kompileerimine (regex)

kui (re.otsing(r, kaardi nr)):
print("Kehtiv")
muidu:
print("Ei kehti")

kaart1 = "4539890694174109"
checkVisaCardNo (card1)

kaart2 = "49237429498"
checkVisaCardNo (card2)

Jällegi kinnitab väljund, et esimene number on kehtiv, samas kui teine ​​on kehtetu:

RegEx American Expressi kaardinumbri kinnitamiseks

American Expressi kaardi number kehtib, kui see vastab järgmistele tingimustele:

  1. String ei tohi sisaldada erimärke, tähestikku ega tühikuid.
  2. See tähemärkide arv peab olema 15.
  3. String peaks algama numbriga 34 või 37.
  4. Viimased 13 numbrit peavad olema numbrid vahemikus 0 kuni 9.

Järgmine regex vastab ülaltoodud tingimustele ja saate seda kasutada American Expressi kaardinumbri kinnitamiseks:

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

American Expressi kaardi numbri saate kinnitada järgmise Pythoni koodiga:

importida re

defcheckAmerican ExpressCardNo(kaardi nr):
regex = "^3[47][0-9]{13}$"
r = uuesti.kompileerimine (regex)

kui (re.otsing(r, kaardi nr)):
print("Kehtiv")
muidu:
print("Ei kehti")

kaart1 = "372831730491196"
checkAmericanExpressCardNo (card1)

kaart2 = "84732593847743042"
checkAmericanExpressCardNo (card2)

Veel kord kinnitab väljund, et esimene number on kehtiv, kuid teine ​​on kehtetu:

Regulaaravaldiste rakendused

Levinud krediitkaardinumbrite kinnitamiseks võite kasutada mõnda üsna lihtsat regexit. RegEx on võimas tööriist, mida saate kasutada andmete eeltöötluseks, mustrite sobitamiseks, andmete ekstraheerimiseks, leksikaalseks analüüsiks, loomuliku keele töötlemiseks, veebi kraapimiseks ja muuks. HTML-vormide valideerimisega tegelemiseks saate veebiarenduses kasutada ka regulaaravaldisi.