Het vinden of verifiëren van creditcardnummers

RegexMagic-genereer reguliere expressies die overeenkomen met creditcardnummers

met een paar eenvoudige reguliere expressies kunt u eenvoudig controleren of uw klant een geldig creditcardnummer heeft ingevoerd op uw bestelformulier. U kunt zelfs bepalen welk type creditcard wordt gebruikt. Elke kaartuitgever heeft zijn eigen reeks kaartnummers, geïdentificeerd door de eerste 4 cijfers.

u kunt een iets andere reguliere expressie gebruiken om creditcardnummers, of nummersequenties die creditcardnummers kunnen zijn, in grotere documenten te vinden. Dit kan zeer nuttig zijn om te bewijzen in een security audit dat je niet onjuist bloot financiële gegevens van uw klanten.

we beginnen met het bestelformulier.

het strippen van spaties en streepjes

de eerste stap is het verwijderen van alle niet-cijfers van het kaartnummer dat door de klant is ingevoerd. Fysieke creditcards hebben spaties binnen het kaartnummer om de cijfers te groeperen, waardoor het makkelijker is voor mensen om te lezen of in te typen. Dus uw bestelformulier moet accepteren kaartnummers met spaties of streepjes erin.

om alle niet-cijfers van het kaartnummer te verwijderen, gebruikt u de functie “Alles vervangen” in uw scripttaal om naar de regex + te zoeken en deze te vervangen door niets. Als u alleen spaties en streepjes wilt vervangen, kunt u +gebruiken. Als deze regex er vreemd uitziet, onthoud dan dat in een tekenklasse het koppelteken een letterlijke letter is wanneer het vlak voor de sluithaakje (of direct na de openingshaakje of negerende cursor) voorkomt.

als je je afvraagt waar de plus voor is: dat is voor prestaties. Als de invoer opeenvolgende niet-cijfers heeft, zoals 1 = = = 2, dan komt + overeen met de drie is gelijk aan tekens in een keer en verwijdert ze in een vervanging. Zonder de plus zouden er drie vervangingen nodig zijn. In dit geval zijn de besparingen slechts een paar microseconden. Maar het is een goede gewoonte om regex efficiëntie in de achterkant van je geest te houden. Hoewel de besparingen zijn minimaal hier, zo is de inspanning van het typen van de extra plus.

creditcardnummers valideren op Uw bestelformulier

creditcardnummers valideren is de ideale taak voor reguliere expressies. Ze zijn gewoon een reeks van 13 tot 16 cijfers, met een paar specifieke cijfers aan het begin die de kaartuitgever identificeren. U kunt de specifieke reguliere expressies hieronder gebruiken om klanten te waarschuwen wanneer ze een soort kaart proberen te gebruiken die u niet accepteert, of om bestellingen met verschillende kaarten naar verschillende processors te sturen. Al deze regexen zijn uit de bibliotheek van RegexBuddy gehaald.

  • visum: ^4{12} (?:{3})?$ Alle Visa kaart nummers beginnen met een 4. Nieuwe kaarten hebben 16 cijfers. Oude kaarten hebben er 13.
  • MasterCard: ^(?:5{2}|222|22|2{2}|27|2720){12}$ MasterCard nummers beginnen met de nummers 51 tot en met 55 of met de nummers 2221 tot en met 2720. Ze hebben allemaal 16 cijfers.
  • American Express: ^3{13}$ American Express-kaartnummers beginnen met 34 of 37 en hebben 15 cijfers.
  • Diners Club: ^3 (?: 0|){11}$ Diners Club card nummers beginnen met 300 tot en met 305, 36 of 38. Ze hebben allemaal 14 cijfers. Er zijn Diners Club kaarten die beginnen met 5 en hebben 16 cijfers. Dit is een joint venture tussen Diners Club en MasterCard, en moet worden verwerkt als een MasterCard.
  • ontdekken: ^6 (?:011/5{2}){12}$ ontdek kaartnummers beginnen met 6011 of 65. Ze hebben allemaal 16 cijfers.
  • JCB: ^(?: 2131/1800/35\d{3})\D{11}$ JCB kaarten beginnend met 2131 of 1800 hebben 15 cijfers. JCB kaarten beginnend met 35 hebben 16 cijfers.

Als u alleen wilt controleren of het kaartnummer er geldig uitziet, zonder het merk te bepalen, kunt u de bovenstaande zes regexen combineren met afwisseling. Een groep die de ankers niet vastlegt, plaatst de ankers buiten de afwisseling. Vrije spatiëring zorgt voor opmerkingen en voor de regex om de breedte van deze pagina te passen.

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

deze reguliere expressies zullen gemakkelijk nummers vangen die ongeldig zijn omdat de klant te veel of te weinig cijfers heeft ingevoerd. Ze zullen geen nummers met onjuiste cijfers vangen. Daarvoor moet u het Luhn-algoritme volgen, wat niet kan worden gedaan met een regex. En natuurlijk, zelfs als het nummer wiskundig geldig is, betekent dat niet dat er een kaart met dit nummer is uitgegeven of dat er geld op de rekening staat. Het voordeel of de reguliere expressie is dat je het kunt zetten in een beetje JavaScript om direct te controleren op voor de hand liggende fouten, in plaats van het maken van de klant te wachten 30 seconden voor uw credit card processor om de bestelling te mislukken. En als uw kaart processor kosten voor mislukte transacties, zult u echt wilt implementeren zowel de regex en de Luhn validatie.

het vinden van creditcardnummers in documenten

met twee eenvoudige wijzigingen kunt u elk van de bovenstaande regexes gebruiken om kaartnummers in grotere documenten te vinden. Vervang gewoon de caret en dollar door een woordgrens zoals in \ b4{12} (?:{3})?\b.

als u van plan bent een grote Documentserver te doorzoeken, zal een eenvoudigere reguliere expressie het zoeken versnellen. Tenzij uw bedrijf 16-cijferige nummers gebruikt voor andere doeleinden, zult u weinig valse positieven hebben. De regex \b \ d{13,16}\b vindt elke reeks van 13 tot 16 cijfers.

wanneer u een harde schijf vol bestanden zoekt, kunt u niet eerst spaties en streepjes verwijderen zoals u kunt bij het valideren van een enkel kaartnummer. Om kaartnummers te vinden met spaties of streepjes erin, gebruik je \b (?: \d*?) {13,16}\b. Deze regex staat elke hoeveelheid spaties en streepjes toe waar dan ook in het getal. Dit is echt de enige manier. Visa en MasterCard zetten cijfers in sets van 4, terwijl Amex en Discover gebruik maken van groepen van 4, 5 en 6 cijfers. Mensen die de nummers invoeren kunnen nog verschillende ideeën hebben.

doneer een donatie

heeft deze website u zojuist een reis naar de boekwinkel bespaard? Doe een donatie om deze site te ondersteunen, en je krijgt een leven lang reclame-vrije toegang tot deze site!

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

Previous post veterinair technicus worden in Wisconsin
Next post Process Art vs. Product Art in Early Childhood Education