Finne Eller Verifisere Kredittkortnumre

RegexMagic-Generere regulære uttrykk matchende kredittkortnumre

med noen enkle regulære uttrykk, kan du enkelt kontrollere om kunden angitt et gyldig kredittkortnummer på bestillingsskjemaet. Du kan selv bestemme hvilken type kredittkort som brukes. Hver kortutsteder har sitt eget utvalg av kortnumre, identifisert av de første 4 sifrene.

du kan bruke et litt annet regulært uttrykk for å finne kredittkortnumre eller nummerserier som kan være kredittkortnumre, i større dokumenter. Dette kan være svært nyttig å bevise i en sikkerhetsrevisjon at du ikke feilaktig utsetter kundenes økonomiske detaljer.

vi starter med bestillingsskjemaet.

Strippeplasser Og Bindestreker

det første trinnet er å fjerne alle ikke-siffer fra kortnummeret som er oppgitt av kunden. Fysiske kredittkort har mellomrom i kortnummeret for å gruppere sifrene, noe som gjør det lettere for mennesker å lese eller skrive inn. Så bestillingsskjemaet skal godta kortnumre med mellomrom eller bindestreker i dem.

for å fjerne alle ikke-siffer fra kortnummeret, bruk bare» erstatt alle » – funksjonen i skriptspråket for å søke etter regex + og erstatte det med ingenting. Hvis du bare vil erstatte mellomrom og bindestreker, kan du bruke +. Hvis denne regexen ser merkelig ut, husk at i en tegnklasse er bindestrek en bokstavelig når den skjer rett før lukkebraketten (eller rett etter åpningsbraketten eller negerende caret).

hvis du lurer på hva pluss er for: det er for ytelse. Hvis inngangen har påfølgende ikke-siffer, for eksempel 1= = = 2, samsvarer + med de tre likestilte tegnene samtidig og sletter dem i en erstatning. Uten pluss, ville tre erstatninger være nødvendig. I dette tilfellet er besparelsene bare noen få mikrosekunder. Men det er en god vane å holde regex effektivitet i bakhodet. Selv om besparelsene er minimal her, så er innsatsen for å skrive det ekstra pluss.

Validere Kredittkortnumre På Bestillingsskjemaet

Validere kredittkortnumre er den ideelle jobben for regulære uttrykk. De er bare en sekvens på 13 til 16 sifre, med noen få spesifikke sifre i starten som identifiserer kortutstederen. Du kan bruke de spesifikke regulære uttrykkene nedenfor for å varsle kunder når de prøver å bruke et slags kort du ikke godtar, eller for å rute bestillinger med forskjellige kort til forskjellige prosessorer. Alle disse regexene ble tatt Fra Regexbuddys bibliotek.

  • Visum: ^4{12}(?:{3})?$ Alle Visa-kortnumre starter med en 4. Nye kort har 16 sifre. Gamle kort har 13.
  • MasterCard: ^(?:5{2}|222|22|2{2}|27|2720){12}$ MasterCard-tallene starter enten med tallene 51 til 55 eller med tallene 2221 til 2720. Alle har 16 sifre.
  • American Express: ^3{13} $ American Express-kortnumre starter med 34 eller 37 og har 15 sifre.
  • Diners Club: ^3(?: 0|){11} $ diners Club kortnumre begynner med 300 til 305, 36 eller 38. Alle har 14 sifre. Det er Diners Club-kort som begynner med 5 og har 16 sifre. Dette er et joint venture mellom Diners Club Og MasterCard, og bør behandles som Et MasterCard.
  • Oppdag: ^6(?:011/5{2}){12}$ Oppdag kortnumre begynner med 6011 eller 65. Alle har 16 sifre.
  • JCB: ^(?: 2131/1800/35 \ d{3})\d{11}$ jcb kort som begynner med 2131 eller 1800 har 15 sifre. JCB-kort som begynner med 35 har 16 sifre.

hvis du bare vil sjekke om kortnummeret ser gyldig ut, uten å bestemme merkevaren, kan du kombinere de seks regexene ovenfor ved hjelp av veksling. En ikke-fangende gruppe setter ankrene utenfor vekslingen. Fri avstand tillater kommentarer og for regex å passe bredden på denne siden.

^(?: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} # Oppdag
| (?:2131/1800/35 \ d{3}) \ d{11} # JCB
)$

disse regulære uttrykk vil lett fange tall som er ugyldige fordi kunden angitt for mange eller for få sifre. De vil ikke fange tall med feil sifre. For det må du følge Luhn-algoritmen, som ikke kan gjøres med en regex. Og selvfølgelig, selv om nummeret er matematisk gyldig, betyr det ikke at et kort med dette nummeret ble utstedt eller at det er penger på kontoen. Fordelen eller det vanlige uttrykket er at du kan sette Det i Litt JavaScript for å øyeblikkelig se etter åpenbare feil, i stedet for å få kunden til å vente 30 sekunder for at kredittkortprosessoren din mislykkes i bestillingen. Og hvis kortprosessoren din belaster for mislykkede transaksjoner, vil du virkelig ønske å implementere både regex og Luhn-valideringen.

Finne Kredittkortnumre I Dokumenter

med to enkle modifikasjoner kan du bruke noen av de ovennevnte regexene til å finne kortnumre i større dokumenter. Bare erstatt caret og dollar med en ordgrense som i \b4{12}(?:{3})?\b.

hvis du planlegger å søke i en stor dokumentserver, vil et enklere regulært uttrykk øke hastigheten på søket. Med mindre firmaet bruker 16-sifrede tall til andre formål, har du få falske positiver. Regex \b\d{13,16} \ b vil finne en sekvens på 13 til 16 sifre.

når du søker på en harddisk full av filer, kan du ikke fjerne mellomrom og bindestreker først som du kan når du validerer et enkelt kortnummer. For å finne kortnumre med mellomrom eller bindestreker i dem, bruk \b(?: \ d*?) {13,16} \ b. denne regex tillater et hvilket som helst antall mellomrom og bindestreker hvor som helst i nummeret. Dette er virkelig den eneste måten. Visa og MasterCard setter sifre i sett med 4, Mens Amex og Discover bruker grupper på 4, 5 og 6 sifre. Folk inn tallene kan ha forskjellige ideer ennå.

Gi En Donasjon

sparte denne nettsiden deg bare en tur til bokhandelen? Vennligst gi en donasjon for å støtte dette nettstedet, og du vil få en levetid på reklame-fri tilgang til dette nettstedet!

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.

Previous post Bli En Veterinær Tekniker I Wisconsin
Next post Process Art vs. Product Art In Early Childhood Education