Een reguliere expressie is een reeks tekens die een zoekpatroon vormt. Reguliere expressies worden voornamelijk gebruikt voor het zoeken, valideren en transformeren van teksten of strings.

Leer hoe u creditcardnummers zoals Mastercard, Visa Card en American Express kunt valideren met reguliere expressies.

Wanneer RegEx gebruiken om een ​​creditcardnummer te valideren?

De services van derden brengen kosten in rekening voor elke transactiepoging. Of de transactie nu succesvol is of niet, u moet de kosten betalen. In dergelijke gevallen wilt u creditcardnummers weigeren die duidelijk ongeldig zijn. U kunt snel creditcardnummers valideren met behulp van reguliere expressies.

Maar u kunt niet volledig vertrouwen op validatie van reguliere expressies voor uw betalingsfunctie. Kaartuitgevers veranderen regelmatig hun kaartnummerpatronen (door nieuwe patronen te introduceren of oude in te trekken), dus de regex-methode is niet de meest robuuste oplossing. Hoewel je kunt proberen de kaartpatronen van een bron als Wikipedia dat wordt regelmatig bijgewerkt.

instagram viewer

U kunt ook regex gebruiken om snel het kaartmerk te vinden dat u vervolgens kunt gebruiken om logo's of labels weer te geven.

Reguliere expressies hebben verschillende praktische use-cases. De Linux grep-opdracht is waarschijnlijk de meest voorkomende praktische use-case van regex.

De code die in dit project wordt gebruikt, is beschikbaar in een GitHub-opslagplaats en is gratis voor u om te gebruiken onder de MIT-licentie.

RegEx om Mastercard-nummer te valideren

Een Mastercard-nummer is geldig als het aan de volgende voorwaarden voldoet:

  1. De tekenreeks mag geen speciale tekens, alfabetten of spaties bevatten.
  2. Het aantal tekens moet gelijk zijn aan 16.
  3. De tekenreeks moet beginnen met een 2-cijferig nummerbereik (variërend van 51 tot 55) of een 4-cijferig nummerbereik (variërend van 2221 tot 2720).
    • Als de tekenreeks begint met een getallenreeks van 2 cijfers (variërend van 51 tot 55), moeten de volgende 14 cijfers een getal zijn tussen 0 en 9.
    • Als de tekenreeks begint met een 4-cijferig getalbereik (variërend van 2221 tot 2720), moeten de volgende 12 cijfers een getal tussen 0 en 9 zijn.

De volgende regex voldoet aan de bovenstaande voorwaarden en kan een Mastercard-nummer valideren:

^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$

Als u zich niet op uw gemak voelt met de bovenstaande uitdrukking, ga dan naar een beginnershandleiding voor reguliere expressies Eerst.

U kunt de bovenstaande regex gebruiken om het Mastercard-nummer in elke programmeertaal te valideren. Ga als volgt te werk in Python:

importeren met betrekking tot

defcheckMasterCardNo(kaartnr):
reguliere expressie = "^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$"
r = opnieuw compileren (regex)

als (met betrekking tot.zoekopdracht(R, kaartnr)):
afdrukken("Geldig")
anders:
afdrukken("Niet geldig")

kaart1 = "5110762060017101"
checkMasterCardNo (kaart1)

kaart2 = "8632458236982734"
checkMasterCardNo (kaart2)

Als u deze code uitvoert, wordt bevestigd dat het eerste nummer geldig is, maar het tweede niet:

RegEx om Visa-kaartnummer te valideren

Een Visa Card-nummer is geldig als het aan de volgende voorwaarden voldoet:

  1. De tekenreeks mag geen speciale tekens, alfabetten of spaties bevatten.
  2. De string moet beginnen met 4.
  3. Het aantal tekens moet gelijk zijn aan 13 of 16. De oude visakaarten hebben 13 karakters en de nieuwe hebben 16 karakters.
    • Als het aantal tekens gelijk is aan 13, moeten de laatste 12 cijfers een getal tussen 0 en 9 zijn.
    • Als het aantal tekens gelijk is aan 16, moeten de laatste 15 cijfers een getal tussen 0 en 9 zijn.

De volgende regex voldoet aan de bovenstaande voorwaarden en u kunt deze gebruiken om een ​​Visa Card-nummer te valideren:

^4[0-9]{12}(?:[0-9]{3})?$

Hieronder vindt u de Python-benadering om een ​​Visa Card-nummer te valideren:

importeren met betrekking tot

defcheckVisaCardNr(kaartnr):
reguliere expressie = "^4[0-9]{12}(?:[0-9]{3})?$"
r = opnieuw compileren (regex)

als (met betrekking tot.zoekopdracht(R, kaartnr)):
afdrukken("Geldig")
anders:
afdrukken("Niet geldig")

kaart1 = "4539890694174109"
checkVisaCardNo (kaart1)

kaart2 = "49237429498"
checkVisaCardNo (kaart2)

Nogmaals, de uitvoer bevestigt dat het eerste getal geldig is, terwijl het tweede ongeldig is:

RegEx om American Express-kaartnummer te valideren

Een American Express kaartnummer is geldig als het aan de volgende voorwaarden voldoet:

  1. De tekenreeks mag geen speciale tekens, alfabetten of spaties bevatten.
  2. Dit aantal tekens moet gelijk zijn aan 15.
  3. De string moet beginnen met 34 of 37.
  4. De laatste 13 cijfers moeten een getal tussen 0 en 9 zijn.

De volgende regex voldoet aan de bovenstaande voorwaarden en u kunt deze gebruiken om een ​​American Express Card-nummer te valideren:

^3[47][0-9]{13}$

U kunt een American Express Card-nummer valideren met behulp van de volgende Python-code:

importeren met betrekking tot

defcheckAmericanExpressCardNo(kaartnr):
reguliere expressie = "^3[47][0-9]{13}$"
r = opnieuw compileren (regex)

als (met betrekking tot.zoekopdracht(R, kaartnr)):
afdrukken("Geldig")
anders:
afdrukken("Niet geldig")

kaart1 = "372831730491196"
checkAmericanExpressCardNo (kaart1)

kaart2 = "84732593847743042"
checkAmericanExpressCardNo (kaart2)

Nogmaals, de uitvoer bevestigt dat het eerste getal geldig is, maar het tweede is ongeldig:

Toepassingen van reguliere expressies

U kunt een vrij eenvoudige regex gebruiken om algemene creditcardnummers te valideren. RegEx is een krachtig hulpmiddel dat u kunt gebruiken voor gegevensvoorverwerking, patroonvergelijking, gegevensextractie, lexicale analyse, verwerking van natuurlijke taal, webschrapen en meer. U kunt ook reguliere expressies gebruiken in webontwikkeling om de validatie van HTML-formulieren af ​​te handelen.