med et par enkle regulære udtryk kan du nemt kontrollere, om din kunde indtastede et gyldigt kreditkortnummer på din ordreformular. Du kan endda bestemme typen af kreditkort, der bruges. Hver kortudsteder har sit eget udvalg af kortnumre, identificeret ved de første 4 cifre.
du kan bruge et lidt andet regulært udtryk til at finde kreditkortnumre eller nummerserier, der kan være kreditkortnumre, i større dokumenter. Dette kan være meget nyttigt at bevise i en sikkerhedsrevision, at du ikke forkert udsætter dine kunders økonomiske detaljer.
vi starter med ordreformularen.
Stripping mellemrum og bindestreger
det første skridt er at fjerne alle ikke-cifre fra kortnummeret indtastet af kunden. Fysiske kreditkort har mellemrum inden for kortnummeret til at gruppere cifrene, hvilket gør det lettere for mennesker at læse eller indtaste. Så din ordreformular skal acceptere kortnumre med mellemrum eller bindestreger i dem.
for at fjerne alle ikke-cifre fra kortnummeret skal du blot bruge funktionen “Erstat alle” på dit scriptsprog for at søge efter regeks + og erstatte det med ingenting. Hvis du kun vil erstatte mellemrum og bindestreger, kan du bruge +. Hvis denne regeks ser underlig ud, skal du huske, at bindestreg i en karakterklasse er en bogstavelig, når den forekommer lige før lukkebeslaget (eller lige efter åbningsbeslaget eller negerende karet).
hvis du spekulerer på, hvad plus er til: det er til ydeevne. Hvis indgangen har på hinanden følgende ikke-cifre, såsom 1===2, matcher + de tre lige tegn på en gang og sletter dem i en erstatning. Uden plus ville tre udskiftninger være påkrævet. I dette tilfælde er besparelserne kun få mikrosekunder. Men det er en god vane at holde regeks effektivitet i ryggen af dit sind. Selvom besparelserne er minimale her, så er indsatsen for at skrive det Ekstra plus.
validering af kreditkortnumre på din ordreformular
validering af kreditkortnumre er det ideelle job til regulære udtryk. De er bare en sekvens på 13 til 16 cifre, med et par specifikke cifre i starten, der identificerer kortudstederen. Du kan bruge de specifikke regulære udtryk nedenfor til at advare kunder, når de forsøger at bruge en slags kort, du ikke accepterer, eller til at dirigere ordrer ved hjælp af forskellige kort til forskellige processorer. Alle disse regelsæt blev taget fra Regessbuddys bibliotek.
- visum: ^4{12} (?:{3})?$ Alle Visa – kortnumre starter med en 4. Nye kort har 16 cifre. Gamle kort har 13.
- MasterCard: ^(?:5{2}|222|22|2{2}|27|2720){12}$ MasterCard-numre starter enten med numrene 51 Til 55 eller med numrene 2221 til 2720. Alle har 16 cifre.
- Amerikansk Ekspres: ^3{13}$ Amerikanske Ekspres kortnumre starter med 34 eller 37 og har 15 cifre.
- Diners Club: ^3(?: 0|){11} $ Diners Club kortnumre begynder med 300 til 305, 36 eller 38. Alle har 14 cifre. Der er Diners Club kort, der begynder med 5 og har 16 cifre. Disse er et joint venture mellem Diners Club og MasterCard, og bør behandles som et MasterCard.
- opdage: ^6(?:011/5{2}){12}$ Oplev kortnumre begynder med 6011 eller 65. Alle har 16 cifre.
- JCB: ^(?: 2131/1800/35 \ D{3})\D{11}$ JCB-kort, der begynder med 2131 eller 1800, har 15 cifre. JCB-kort, der begynder med 35, har 16 cifre.
hvis du bare vil kontrollere, om kortnummeret ser gyldigt ud, uden at bestemme mærket, kan du kombinere de ovennævnte seks regekser ved hjælp af veksling. En ikke-fangende gruppe sætter ankrene uden for vekslen. Fri afstand giver mulighed for kommentarer og for regeks til at passe bredden af denne side.
^(?:4{12}(?:{3})? # Visa
/ (?: 5{2} # MasterCard
| 222/22/2{2}|27|2720){12}
| 3{13} # Amerikansk Ekspres
| 3 (?: 0/) {11} # Diners Club
/ 6 (?:011/5{2}){12} # opdage
/ (?:2131/1800/35 \ D{3}) \ D{11} # JCB
)$
disse regulære udtryk fanger let tal, der er ugyldige, fordi kunden indtastede for mange eller for få cifre. De vil ikke fange tal med forkerte cifre. Til det skal du følge Luhn-algoritmen, som ikke kan gøres med en regeks. Og selvfølgelig, selvom nummeret er matematisk gyldigt, betyder det ikke, at et kort med dette nummer blev udstedt, eller at der er penge på kontoen. Fordelen eller det regulære udtryk er, at du kan sætte det i en smule JavaScript for øjeblikkeligt at kontrollere for åbenlyse fejl, i stedet for at få kunden til at vente 30 sekunder på, at din kreditkortprocessor fejler ordren. Og hvis dit kort processor afgifter for mislykkede transaktioner, vil du virkelig ønsker at gennemføre både regeks og Luhn Validering.
find kreditkortnumre i dokumenter
med to enkle ændringer kan du bruge et af ovenstående regekser til at finde kortnumre i større dokumenter. Du skal blot erstatte caret og dollar med et ord grænse som i \b4{12} (?:{3})?\b.
hvis du planlægger at søge på en stor dokumentserver, vil et enklere regulært udtryk fremskynde søgningen. Medmindre din virksomhed bruger 16-cifrede tal til andre formål, har du få falske positiver. Regeks \b \ d{13,16} \ b finder en hvilken som helst sekvens på 13 til 16 cifre.
når du søger på en harddisk fuld af filer, kan du ikke fjerne mellemrum og bindestreger først, som du kan, når du validerer et enkelt kortnummer. For at finde kortnumre med mellemrum eller bindestreger i dem, Brug \b(?: \ d*?) {13,16} \ b. denne regeks tillader enhver mængde mellemrum og bindestreger hvor som helst i nummeret. Dette er virkelig den eneste måde. Visa og MasterCard sætter cifre i sæt på 4, mens de bruger grupper på 4, 5 og 6 cifre. Folk, der indtaster tallene, kan have forskellige ideer endnu.
lav en Donation
har denne hjemmeside lige sparet dig en tur til boghandlen? Giv en donation for at støtte dette site, og du får en levetid på reklame-fri adgang til dette site!