A reguláris kifejezés olyan karaktersorozat, amely keresési mintát alkot. A reguláris kifejezéseket főleg szövegek vagy karakterláncok keresésére, érvényesítésére és átalakítására használják.
Ismerje meg, hogyan érvényesítheti a hitelkártyaszámokat, például a Mastercard, a Visa Card és az American Express szabályos kifejezésekkel.
Mikor használjunk RegEx-et a hitelkártyaszám érvényesítéséhez?
A harmadik fél szolgáltatásai minden tranzakciós kísérletért díjat számítanak fel. Akár sikeres a tranzakció, akár nem, Önnek ki kell fizetnie a költségeket. Ilyen esetekben el akarja utasítani az egyértelműen érvénytelen hitelkártyaszámokat. A reguláris kifejezések segítségével gyorsan ellenőrizheti a hitelkártyaszámokat.
De nem támaszkodhat teljes mértékben a reguláris kifejezés érvényesítésére a fizetési funkciónál. A kártyakibocsátók rendszeresen változtatják a kártyaszámmintákat (új mintákat vezetnek be, vagy visszavonják a régieket), így a regex módszer nem a legrobusztusabb megoldás. Bár meg lehet próbálni a tetején tartani a kártyamintákat olyan forrásból, mint például
Wikipédia ami gyakran frissül.A regex segítségével gyorsan megtalálhatja a kártya márkáját, amelyet ezután logók vagy címkék megjelenítésére használhat.
A reguláris kifejezéseknek számos gyakorlati felhasználási esete van. A Linux grep parancs valószínűleg a regex leggyakoribb gyakorlati felhasználási esete.
A projektben használt kód elérhető a GitHub adattár és az MIT licence alapján ingyenesen használható.
RegEx a Mastercard-szám érvényesítéséhez
A Mastercard szám akkor érvényes, ha megfelel az alábbi feltételeknek:
- A karakterlánc nem tartalmazhat speciális karaktereket, ábécét vagy szóközöket.
- A karakterek számának 16-nak kell lennie.
- A karakterláncnak vagy egy 2-jegyű számtartománnyal (51-től 55-ig) vagy egy 4-jegyű számtartománnyal (2221-től 2720-ig) kell kezdődnie.
- Ha a karakterlánc kétjegyű számtartománnyal kezdődik (51 és 55 között), a következő 14 számjegynek 0 és 9 közötti számnak kell lennie.
- Ha a karakterlánc 4 jegyű számtartománnyal kezdődik (2221 és 2720 között), a következő 12 számjegynek 0 és 9 közötti számnak kell lennie.
A következő regex teljesíti a fenti feltételeket, és érvényesítheti a Mastercard-számot:
^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}$
Ha nem elégedett a fenti kifejezéssel, nézze meg kezdőknek szóló útmutató a reguláris kifejezésekhez első.
A fenti regex segítségével bármely programozási nyelven érvényesítheti a Mastercard számot. Pythonban a következőképpen teheti meg:
import újra
defcheckMasterCardNo(igazolvány száma):
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 = újra.fordítás (regex)ha (újra.keresés(r, igazolvány száma)):
nyomtatás("Érvényes")
más:
nyomtatás("Nem érvényes")kártya1 = "5110762060017101"
checkMasterCardNo (card1)
kártya2 = "8632458236982734"
checkMasterCardNo (2. kártya)
A kód futtatása megerősíti, hogy az első szám érvényes, de a második nem:
RegEx a Visa kártyaszám érvényesítéséhez
A Visa kártyaszám akkor érvényes, ha megfelel az alábbi feltételeknek:
- A karakterlánc nem tartalmazhat speciális karaktereket, ábécét vagy szóközöket.
- A karakterláncnak 4-gyel kell kezdődnie.
- A karakterek számának 13-nak vagy 16-nak kell lennie. A régi vízumkártyák 13, az újak 16 karakterből állnak.
- Ha a karakterek száma 13, az utolsó 12 számjegynek 0 és 9 közötti számnak kell lennie.
- Ha a karakterek száma 16, az utolsó 15 számjegynek 0 és 9 közötti számnak kell lennie.
A következő reguláris kifejezés teljesíti a fenti feltételeket, és Ön használhatja Visa kártyaszám érvényesítésére:
^4[0-9]{12}(?:[0-9]{3})?$
Az alábbiakban bemutatjuk a Python módszert a Visa kártyaszám érvényesítésére:
import újra
defcheckVisaCardNo(igazolvány száma):
regex = "^4[0-9]{12}(?:[0-9]{3})?$"
r = újra.fordítás (regex)ha (újra.keresés(r, igazolvány száma)):
nyomtatás("Érvényes")
más:
nyomtatás("Nem érvényes")kártya1 = "4539890694174109"
checkVisaCardNo (card1)
kártya2 = "49237429498"
checkVisaCardNo (card2)
A kimenet ismét megerősíti, hogy az első szám érvényes, míg a második érvénytelen:
RegEx az American Express kártyaszám érvényesítéséhez
Az American Express kártyaszám akkor érvényes, ha az alábbi feltételeknek megfelel:
- A karakterlánc nem tartalmazhat speciális karaktereket, ábécét vagy szóközöket.
- A karakterek számának 15-nek kell lennie.
- A karakterláncnak 34-gyel vagy 37-tel kell kezdődnie.
- Az utolsó 13 számjegynek 0 és 9 közötti számnak kell lennie.
A következő regex teljesíti a fenti feltételeket, és felhasználhatja az American Express kártyaszám érvényesítésére:
^3[47][0-9]{13}$
American Express kártyaszámát a következő Python kóddal érvényesítheti:
import újra
defcheckAmericanExpressCardNo(igazolvány száma):
regex = "^3[47][0-9]{13}$"
r = újra.fordítás (regex)ha (újra.keresés(r, igazolvány száma)):
nyomtatás("Érvényes")
más:
nyomtatás("Nem érvényes")kártya1 = "372831730491196"
checkAmerican ExpressCardNo (card1)
kártya2 = "84732593847743042"
checkAmerican ExpressCardNo (card2)
A kimenet még egyszer megerősíti, hogy az első szám érvényes, de a második érvénytelen:
Reguláris kifejezések alkalmazásai
Használhat néhány meglehetősen egyszerű szabályos kifejezést a gyakori hitelkártyaszámok érvényesítésére. A RegEx egy hatékony eszköz, amelyet adat-előfeldolgozásra, mintaegyeztetésre, adatkinyerésre, lexikális elemzésre, természetes nyelvi feldolgozásra, webkaparásra stb. használhat. A webfejlesztésben reguláris kifejezéseket is használhat a HTML-űrlapok érvényesítésének kezelésére.