néhány egyszerű reguláris kifejezések, könnyen ellenőrizheti, hogy az ügyfél megadott érvényes hitelkártya számát A megrendelőlapon. Még a használt hitelkártya típusát is meghatározhatja. Minden kártyakibocsátónak megvan a saját kártyaszáma, amelyet az első 4 számjegy azonosít.
használhat egy kissé eltérő reguláris kifejezést a nagyobb dokumentumokban található hitelkártyaszámok vagy számsorozatok megkereséséhez. Ez nagyon hasznos lehet egy biztonsági ellenőrzés során bizonyítani, hogy nem helytelenül tárja fel ügyfelei pénzügyi adatait.
kezdjük a megrendelőlapot.
szóközök és kötőjelek eltávolítása
az első lépés az összes nem számjegy eltávolítása az ügyfél által megadott kártyaszámból. A fizikai hitelkártyák a kártyaszámon belül szóközökkel rendelkeznek a számjegyek csoportosításához, megkönnyítve az emberek számára az olvasást vagy a gépelést. Tehát a megrendelőlapnak el kell fogadnia a kártyaszámokat szóközökkel vagy kötőjelekkel.
ha az összes nem számjegyet el szeretné távolítani a kártyaszámból, egyszerűen használja a szkriptnyelv “összes cseréje” funkcióját a regex + kereséséhez, és cserélje ki a semmit. Ha csak szóközöket és kötőjeleket szeretne cserélni, használhatja a +lehetőséget. Ha ez a regex furcsának tűnik, ne feledje, hogy egy karakterosztályban a kötőjel szó szerinti, ha közvetlenül a záró zárójel előtt (vagy közvetlenül a nyitó zárójel vagy a tagadó caret után) fordul elő.
ha kíváncsi, hogy mi a plusz: ez a teljesítmény. Ha a bemenet egymást követő nem számjegyekkel rendelkezik, például 1===2, akkor a + egyszerre illeszkedik a három egyenlőségjelhez, és egy cserével törli őket. A plusz nélkül három cserére lenne szükség. Ebben az esetben a megtakarítás csak néhány mikroszekundum. De jó szokás, hogy a regex hatékonyságát a fejedben tartsa. Bár a megtakarítás itt minimális, így az extra plusz beírásának erőfeszítése is.
hitelkártyaszámok érvényesítése a megrendelőlapon
a hitelkártyaszámok érvényesítése ideális feladat a reguláris kifejezésekhez. Ezek csak egy 13-16 számjegyből álló sorozat, néhány konkrét számmal az elején, amelyek azonosítják a kártya kibocsátóját. Az alábbi reguláris kifejezések segítségével figyelmeztetheti az ügyfeleket, amikor olyan kártyát próbálnak használni, amelyet nem fogad el, vagy különböző kártyák segítségével irányíthatja a megrendeléseket különböző processzorokhoz. Ezek a regexek RegexBuddy könyvtárából származnak.
- vízum: ^4{12}(?:{3})?$ Minden Visa kártyaszám 4-gyel kezdődik. Az új kártyák 16 számjegyből állnak. Régi kártyák 13.
- MasterCard: ^(?:5{2}|222|22|2{2}|27|2720){12}$ a MasterCard számok vagy az 51-től 55-ig, vagy a 2221-től 2720-ig terjedő számokkal kezdődnek. Mindegyiknek 16 számjegye van.
- American Express: ^3{13} A$ American Express kártyaszámok 34-gyel vagy 37-gyel kezdődnek, és 15 számjegyből állnak.
- Diners Club: ^3 (?: 0/) {11} $ Diners Club kártya számok kezdődik 300 keresztül 305, 36 vagy 38. Mindegyiknek 14 számjegye van. Vannak Diners Club kártyák, amelyek 5-tel kezdődnek és 16 számjegyből állnak. Ez egy közös vállalkozás a Diners Club és a MasterCard között, és úgy kell feldolgozni, mint egy MasterCard.
- felfedez: ^6 (?:011/5{2}){12}$ fedezze kártya számok kezdődik 6011 vagy 65. Mindegyiknek 16 számjegye van.
- JCB: ^(?:2131/1800/35 \ d{3}) \ D{11}$ JCB kártyák kezdődő 2131 vagy 1800 van 15 számjegy. A 35-tel kezdődő JCB kártyáknak 16 számjegyük van.
ha csak azt szeretné ellenőrizni, hogy a kártya száma érvényesnek tűnik-e, a márka meghatározása nélkül kombinálhatja a fenti hat regexet váltakozással. A nem rögzítő csoport a horgonyokat a váltakozáson kívül helyezi. A szabad térköz lehetővé teszi a megjegyzéseket és a regexet, hogy illeszkedjen az oldal szélességéhez.
^(?:4{12}(?:{3})? # Visa
/ (?:5{2} # MasterCard
| 222/22/2{2}|27|2720){12}
| 3{13} # American Express
/ 3 (?:0/) {11} # Diners Club
/ 6 (?:011/5{2}){12} # felfedez
/ (?:2131/1800/35 \ D{3}) \ d{11} # JCB
)$
ezek a reguláris kifejezések könnyen elkapják az érvénytelen számokat, mert az ügyfél túl sok vagy túl kevés számjegyet adott meg. Nem fogják elkapni a helytelen számjegyekkel rendelkező számokat. Ehhez követnie kell a Luhn algoritmust, amelyet nem lehet megtenni regexszel. Természetesen, még ha a szám matematikailag érvényes is, ez nem jelenti azt, hogy kiadtak egy kártyát ezzel a számmal, vagy hogy pénz van a számlán. Az előny vagy a reguláris kifejezés az, hogy beteheti egy kis Javascriptbe, hogy azonnal ellenőrizze a nyilvánvaló hibákat, ahelyett, hogy az ügyfelet 30 másodpercre várná, amíg a hitelkártya-feldolgozó meghiúsítja a megrendelést. És ha a kártyaprocesszor díjat számít fel a sikertelen tranzakciókért, akkor valóban meg akarja valósítani mind a regex, mind a Luhn érvényesítést.
hitelkártya-számok keresése a Dokumentumokban
két egyszerű módosítással a fenti regexek bármelyikét felhasználhatja a nagyobb dokumentumok kártyaszámainak megkereséséhez. Egyszerűen cserélje ki a caret és a dollár szót egy szóhatárra, mint a \b4{12}(?:{3})?\b.
ha nagy dokumentumkiszolgálón kíván keresni, egy egyszerűbb reguláris kifejezés felgyorsítja a keresést. Hacsak a vállalat nem használ 16 jegyű számokat más célokra, kevés hamis pozitív eredményt kap. A regex \ b \ d{13,16} \ b bármilyen 13-16 számjegyű sorozatot talál.
fájlokkal teli merevlemezen történő kereséskor nem lehet először szóközöket és kötőjeleket kivágni, mint egyetlen kártyaszám érvényesítésekor. A kártyaszámok szóközökkel vagy kötőjelekkel való megkereséséhez használja a \b(?: \ d*?) {13,16} \ b. Ez a regex tetszőleges mennyiségű szóközt és kötőjelet engedélyez a szám bármely pontján. Ez tényleg az egyetlen módja. A Visa és a MasterCard 4-es, míg az Amex és a Discover 4-es, 5-ös és 6-os számjegyeket használ. A számokat beíró embereknek még eltérő ötleteik lehetnek.
Adományozzon
ez a weboldal csak megtakarított egy utat a könyvesboltba? Kérjük, Adományozzon, hogy támogassa ezt az oldalt, és kapsz egy életre reklámmentes hozzáférést ehhez az oldalhoz!