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.
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:
- String ei tohi sisaldada erimärke, tähestikku ega tühikuid.
- Tähemärkide arv peab olema 16.
- 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:
- String ei tohi sisaldada erimärke, tähestikku ega tühikuid.
- String peaks algama 4-ga.
- 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:
- String ei tohi sisaldada erimärke, tähestikku ega tühikuid.
- See tähemärkide arv peab olema 15.
- String peaks algama numbriga 34 või 37.
- 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.