Säännöllinen lauseke on merkkijono, joka muodostaa hakukuvion. Säännöllisiä lausekkeita käytetään pääasiassa tekstien tai merkkijonojen etsimiseen, vahvistamiseen ja muuntamiseen.
Opi vahvistamaan luottokorttinumeroita, kuten Mastercard, Visa Card ja American Express, säännöllisillä lausekkeilla.
Milloin käyttää RegEx-lauseketta luottokorttinumeron vahvistamiseen?
Kolmannen osapuolen palvelut veloittavat jokaisesta tapahtumayrityksestä. Olipa kauppa onnistunut tai ei, sinun on maksettava maksut. Tällaisissa tapauksissa haluat hylätä luottokorttinumerot, jotka ovat selvästi virheellisiä. Voit tarkistaa luottokorttien numerot nopeasti käyttämällä säännöllisiä lausekkeita.
Et kuitenkaan voi täysin luottaa maksuominaisuuden säännölliseen lausekkeeseen. Kortinmyöntäjät muuttavat säännöllisesti korttinumeroita (ottavat käyttöön uusia malleja tai poistavat vanhoja), joten regex-menetelmä ei ole tehokkain ratkaisu. Vaikka voit yrittää pitää korttikuvioiden päällä esimerkiksi lähteestä Wikipedia jota päivitetään usein.
Voit myös käyttää regexiä löytääksesi nopeasti kortin tuotemerkin, jota voit käyttää logojen tai tarrojen näyttämiseen.
Säännöllisillä lausekkeilla on useita käytännön käyttötapauksia. Linuxin grep-komento on luultavasti yleisin säännöllisen lausekkeen käyttötapaus.
Tässä projektissa käytetty koodi on saatavilla a GitHub-arkisto ja sen käyttö on ilmaista MIT-lisenssin alaisena.
RegEx Mastercard-numeron vahvistamiseksi
Mastercard-numero on voimassa, jos se täyttää seuraavat ehdot:
- Merkkijono ei saa sisältää erikoismerkkejä, aakkosia tai välilyöntejä.
- Merkkien lukumäärän on oltava 16.
- Merkkijonon tulee alkaa joko 2-numeroisella numeroalueella (välillä 51-55) tai 4-numeroisella numeroalueella (välillä 2221-2720).
- Jos merkkijono alkaa 2-numeroisella numeroalueella (välillä 51–55), seuraavien 14 numeroa on oltava numero väliltä 0–9.
- Jos merkkijono alkaa 4-numeroisella numeroalueella (välillä 2221–2720), seuraavien 12 numeron on oltava välillä 0–9.
Seuraava regex täyttää yllä olevat ehdot ja voi vahvistaa Mastercard-numeron:
^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}$
Jos et ole tyytyväinen yllä olevaan ilmaisuun, tarkista säännöllisten lausekkeiden aloittelijan opas ensimmäinen.
Voit käyttää yllä olevaa säännöllistä lauseketta Mastercard-numeron vahvistamiseen millä tahansa ohjelmointikielellä. Näin voit tehdä sen Pythonissa:
tuonti re
defcheckMasterCardNo(kortin nro):
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 = uudelleen.kääntä (säännöllinen lauseke)jos (re.Hae(r, kortin nro)):
Tulosta("Pätevä")
muu:
Tulosta("Ei voimassa")kortti1 = "5110762060017101"
checkMasterCardNo (card1)
kortti2 = "8632458236982734"
checkMasterCardNo (card2)
Tämän koodin suorittaminen vahvistaa, että ensimmäinen numero on kelvollinen, mutta toinen ei:
RegEx vahvistaa Visa-kortin numeron
Visa-kortin numero on kelvollinen, jos se täyttää seuraavat ehdot:
- Merkkijono ei saa sisältää erikoismerkkejä, aakkosia tai välilyöntejä.
- Merkkijonon tulee alkaa numerolla 4.
- Merkkien lukumäärän on oltava 13 tai 16. Vanhoissa viisumikorteissa on 13 merkkiä ja uusissa 16 merkkiä.
- Jos merkkien määrä on 13, viimeisen 12 numeron on oltava välillä 0-9.
- Jos merkkien määrä on 16, viimeisen 15 numeron on oltava välillä 0-9.
Seuraava regex täyttää yllä olevat ehdot, ja voit käyttää sitä Visa-kortin numeron vahvistamiseen:
^4[0-9]{12}(?:[0-9]{3})?$
Alla on Python-menetelmä Visa-kortin numeron vahvistamiseen:
tuonti re
defcheckVisaCardNo(kortin nro):
regex = "^4[0-9]{12}(?:[0-9]{3})?$"
r = uudelleen.kääntä (säännöllinen lauseke)jos (re.Hae(r, kortin nro)):
Tulosta("Pätevä")
muu:
Tulosta("Ei voimassa")kortti1 = "4539890694174109"
checkVisaCardNo (card1)
kortti2 = "49237429498"
checkVisaCardNo (card2)
Jälleen tulos vahvistaa, että ensimmäinen numero on kelvollinen, kun taas toinen on virheellinen:
RegEx vahvistaa American Express -korttinumeron
American Express -kortin numero on kelvollinen, jos se täyttää seuraavat ehdot:
- Merkkijono ei saa sisältää erikoismerkkejä, aakkosia tai välilyöntejä.
- Tämän merkkien määrän on oltava 15.
- Merkkijonon tulee alkaa numerolla 34 tai 37.
- Viimeisten 13 numeron on oltava välillä 0–9.
Seuraava regex täyttää yllä olevat ehdot, ja voit käyttää sitä American Express -kortin numeron vahvistamiseen:
^3[47][0-9]{13}$
Voit vahvistaa American Express -kortin numeron käyttämällä seuraavaa Python-koodia:
tuonti re
deftarkista AmericanExpressCardNo(kortin nro):
regex = "^3[47][0-9]{13}$"
r = uudelleen.kääntä (säännöllinen lauseke)jos (re.Hae(r, kortin nro)):
Tulosta("Pätevä")
muu:
Tulosta("Ei voimassa")kortti1 = "372831730491196"
checkAmericanExpressCardNo (card1)
kortti2 = "84732593847743042"
checkAmericanExpressCardNo (card2)
Jälleen kerran tulos vahvistaa, että ensimmäinen numero on kelvollinen, mutta toinen on virheellinen:
Säännöllisten lausekkeiden sovellukset
Voit käyttää joitain melko yksinkertaisia säännöllisiä lausekkeita yleisten luottokorttinumeroiden vahvistamiseen. RegEx on tehokas työkalu, jota voit käyttää tietojen esikäsittelyyn, kuvioiden yhteensovittamiseen, tiedon poimimiseen, leksikaaliseen analyysiin, luonnollisen kielen käsittelyyn, verkkokaappaukseen ja moneen muuhun. Voit myös käyttää säännöllisiä lausekkeita verkkokehityksessä käsitelläksesi HTML-lomakkeiden validointia.