Hitta eller verifiera kreditkortsnummer

RegexMagic—generera reguljära uttryck som matchar kreditkortsnummer

med några enkla reguljära uttryck kan du enkelt verifiera om din kund angav ett giltigt kreditkortsnummer på ditt beställningsformulär. Du kan även bestämma vilken typ av kreditkort som används. Varje kortutgivare har sitt eget utbud av kortnummer, identifierade med de första 4 siffrorna.

du kan använda ett något annorlunda Reguljärt uttryck för att hitta kreditkortsnummer, eller nummersekvenser som kan vara kreditkortsnummer, i större dokument. Detta kan vara mycket användbart för att bevisa i en säkerhetsrevision att du inte felaktigt exponerar dina kunders ekonomiska detaljer.

vi börjar med beställningsformuläret.

Stripping mellanslag och bindestreck

det första steget är att ta bort alla icke-siffror från kortnumret som anges av kunden. Fysiska kreditkort har mellanslag inom kortnumret för att gruppera siffrorna, vilket gör det lättare för människor att läsa eller skriva in. Så ditt beställningsformulär ska acceptera kortnummer med mellanslag eller streck i dem.

för att ta bort alla icke-siffror från kortnumret, använd bara funktionen ”Ersätt alla” i ditt skriptspråk för att söka efter regex + och ersätta den med ingenting. Om du bara vill ersätta mellanslag och bindestreck kan du använda +. Om denna regex ser udda ut, kom ihåg att i en teckenklass är bindestrecket en bokstavlig när den inträffar strax före stängningsfästet (eller strax efter öppningsfästet eller negerande caret).

om du undrar vad plus är för: det är för prestanda. Om ingången har på varandra följande icke-siffror, till exempel 1===2, matchar + de tre likhetstecknen samtidigt och raderar dem i en ersättning. Utan plus skulle tre ersättare krävas. I detta fall är besparingarna bara några mikrosekunder. Men det är en bra vana att hålla regex effektivitet bakom dig. Även om besparingarna är minimala här, så är ansträngningen att skriva extra plus.

validera kreditkortsnummer på ditt beställningsformulär

validera kreditkortsnummer är det perfekta jobbet för reguljära uttryck. De är bara en sekvens av 13 till 16 siffror, med några specifika siffror i början som identifierar kortutgivaren. Du kan använda de specifika reguljära uttrycken nedan för att varna kunder när de försöker använda ett slags kort som du inte accepterar, eller för att dirigera beställningar med olika kort till olika processorer. Alla dessa regexes togs från Regexbuddys bibliotek.

  • visum: ^4{12} (?:{3})?$ Alla Visa – kortnummer börjar med en 4. Nya kort har 16 siffror. Gamla kort har 13.
  • MasterCard: ^(?:5{2}|222|22|2{2}|27|2720){12}$ MasterCard-nummer börjar antingen med siffrorna 51 till 55 eller med siffrorna 2221 till 2720. Alla har 16 siffror.
  • American Express: ^3{13}$ American Express-kortnummer börjar med 34 eller 37 och har 15 siffror.
  • Diners Club: ^3(?: 0|){11}$ Diners Club kortnummer börjar med 300 genom 305, 36 eller 38. Alla har 14 siffror. Det finns Diners Club-kort som börjar med 5 och har 16 siffror. Dessa är ett joint venture mellan Diners Club och MasterCard, och bör behandlas som ett MasterCard.
  • Upptäck: ^6 (?:011/5{2}){12}$ Upptäck kortnummer börjar med 6011 eller 65. Alla har 16 siffror.
  • JCB: ^(?: 2131/1800/35\D{3}) \ D{11}$ JCB-kort som börjar med 2131 eller 1800 har 15 siffror. JCB-kort som börjar med 35 har 16 siffror.

om du bara vill kontrollera om kortnumret ser giltigt ut, utan att bestämma varumärket, kan du kombinera ovanstående sex regexer med alternering. En icke-fångande grupp sätter ankarna utanför växlingen. Fritt avstånd möjliggör kommentarer och för regex att passa bredden på denna sida.

^(?:4{12}(?:{3})? # Visum
/ (?: 5{2} # MasterCard
| 222/22/2{2}|27|2720){12}
| 3{13} # American Express
| 3 (?: 0|){11} # Diners Club
/ 6 (?:011/5{2}){12} # Upptäck
/ (?: 2131/1800/35 \ D{3}) \ D{11} # JCB
)$

dessa reguljära uttryck kommer lätt att fånga siffror som är ogiltiga eftersom kunden angav för många eller för få siffror. De kommer inte att fånga siffror med felaktiga siffror. För det måste du följa Luhn-algoritmen, som inte kan göras med en regex. Och naturligtvis, även om numret är matematiskt giltigt, betyder det inte att ett kort med detta nummer utfärdades eller att det finns pengar på kontot. Fördelen eller det reguljära uttrycket är att du kan lägga det i lite JavaScript för att omedelbart kontrollera uppenbara fel, istället för att kunden väntar 30 sekunder på att din kreditkortsprocessor misslyckas med beställningen. Och om ditt kort processor avgifter för misslyckade transaktioner, du verkligen vill genomföra både regex och Luhn validering.

hitta kreditkortsnummer i dokument

med två enkla ändringar kan du använda någon av ovanstående regexes för att hitta kortnummer i större dokument. Ersätt bara caret och dollar med en ordgräns som i \b4{12} (?:{3})?\b.

om du planerar att söka i en stor Dokumentserver kommer ett enklare Reguljärt uttryck att påskynda sökningen. Om inte ditt företag använder 16-siffriga nummer för andra ändamål har du få falska positiva effekter. Regex \ b \ d{13,16} \ b hittar någon sekvens av 13 till 16 siffror.

när du söker på en hårddisk full av filer kan du inte ta bort mellanslag och streck först som du kan när du validerar ett enda kortnummer. För att hitta kortnummer med mellanslag eller streck i dem, använd \b (?: \ d*?) {13,16}\b. denna regex tillåter valfritt antal mellanslag och bindestreck var som helst i numret. Detta är verkligen det enda sättet. Visa och MasterCard sätter siffror i uppsättningar av 4, medan Amex och Discover använder grupper av 4, 5 och 6 siffror. Personer som kommer in i siffrorna kan ha olika ideer än.

gör en Donation

har denna webbplats bara spara en resa till bokhandeln? Vänligen gör en donation för att stödja denna webbplats, och du får en livstid av reklamfri tillgång till denna webbplats!

Lämna ett svar

Din e-postadress kommer inte publiceras.

Previous post bli veterinärtekniker i Wisconsin
Next post Process Art vs. Product Art in Early Childhood Education