Website-Suche

So validieren Sie Kreditkartennummern mithilfe regulärer Ausdrücke


Reguläre Ausdrücke sind das perfekte Werkzeug, um Formate mit einfachen, klar definierten Regeln, wie etwa Kreditkartennummern, zu validieren.

Ein regulärer Ausdruck ist eine Zeichenfolge, die ein Suchmuster bildet. Reguläre Ausdrücke werden hauptsächlich zum Suchen, Validieren und Transformieren von Texten oder Zeichenfolgen verwendet.

Erfahren Sie, wie Sie Kreditkartennummern wie Mastercard, Visa Card und American Express mit regulären Ausdrücken validieren.

Wann sollte RegEx zur Validierung einer Kreditkartennummer verwendet werden?

Die Drittanbieterdienste berechnen für jeden Transaktionsversuch eine Gebühr. Unabhängig davon, ob die Transaktion erfolgreich ist oder nicht, müssen Sie die Gebühren bezahlen. In solchen Fällen möchten Sie Kreditkartennummern ablehnen, die eindeutig ungültig sind. Mit regulären Ausdrücken können Sie Kreditkartennummern schnell validieren.

Sie können sich bei Ihrer Zahlungsfunktion jedoch nicht vollständig auf die Validierung durch reguläre Ausdrücke verlassen. Kartenherausgeber ändern regelmäßig ihre Kartennummernmuster (führen neue Muster ein oder entfernen alte Muster), sodass die Regex-Methode nicht die robusteste Lösung ist. Sie können jedoch versuchen, den Überblick über die Kartenmuster aus einer Quelle wie Wikipedia zu behalten, die regelmäßig aktualisiert wird.

Sie können Regex auch verwenden, um schnell die Kartenmarke zu finden, die Sie dann zum Anzeigen von Logos oder Etiketten verwenden können.

Reguläre Ausdrücke haben mehrere praktische Anwendungsfälle. Der Linux-Befehl grep ist wahrscheinlich der häufigste praktische Anwendungsfall von Regex.

Der in diesem Projekt verwendete Code ist in einem GitHub-Repository verfügbar und kann unter der MIT-Lizenz kostenlos verwendet werden.

RegEx zur Validierung der Mastercard-Nummer

Eine Mastercard-Nummer ist gültig, wenn sie die folgenden Bedingungen erfüllt:

  1. Die Zeichenfolge sollte keine Sonderzeichen, Buchstaben oder Leerzeichen enthalten.
  2. Die Anzahl der Zeichen muss 16 betragen.
  3. Die Zeichenfolge sollte entweder mit einem zweistelligen Zahlenbereich (im Bereich von 51 bis 55) oder einem vierstelligen Zahlenbereich (im Bereich von 2221 bis 2720) beginnen.

    • Wenn die Zeichenfolge mit einem zweistelligen Zahlenbereich (im Bereich von 51 bis 55) beginnt, müssen die nächsten 14 Ziffern eine Zahl zwischen 0 und 9 sein.
    • Wenn die Zeichenfolge mit einem 4-stelligen Zahlenbereich beginnt (im Bereich von 2221 bis 2720), müssen die nächsten 12 Ziffern eine Zahl zwischen 0 und 9 sein.

Der folgende reguläre Ausdruck erfüllt die oben genannten Bedingungen und kann eine Mastercard-Nummer validieren:

^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}$

Wenn Sie mit dem oben genannten Ausdruck nicht vertraut sind, lesen Sie zunächst einen Leitfaden für Einsteiger zu regulären Ausdrücken.

Sie können den obigen regulären Ausdruck verwenden, um die Mastercard-Nummer in jeder Programmiersprache zu validieren. So geht das in Python:

import re
 
def checkMasterCardNo(cardNo):
    regex = "^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 = re.compile(regex)
 
    if (re.search(r, cardNo)):
        print("Valid")
    else:
        print("Not Valid")
 
card1 = "5110762060017101"
checkMasterCardNo(card1)
 
card2 = "8632458236982734"
checkMasterCardNo(card2)

Durch Ausführen dieses Codes wird bestätigt, dass die erste Zahl gültig ist, die zweite jedoch nicht:

RegEx zur Validierung der Visa-Kartennummer

Eine Visa-Kartennummer ist gültig, wenn sie die folgenden Bedingungen erfüllt:

  1. Die Zeichenfolge sollte keine Sonderzeichen, Buchstaben oder Leerzeichen enthalten.
  2. Die Zeichenfolge sollte mit 4 beginnen.
  3. Die Anzahl der Zeichen muss 13 oder 16 betragen. Die alten Visa-Karten haben 13 Zeichen und die neuen 16 Zeichen.

    • Wenn die Anzahl der Zeichen 13 beträgt, müssen die letzten 12 Ziffern eine Zahl zwischen 0 und 9 sein.
    • Wenn die Anzahl der Zeichen 16 beträgt, müssen die letzten 15 Ziffern eine Zahl zwischen 0 und 9 sein.

Der folgende reguläre Ausdruck erfüllt die oben genannten Bedingungen und Sie können ihn zur Validierung einer Visa-Kartennummer verwenden:

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

Nachfolgend finden Sie den Python-Ansatz zur Validierung einer Visa-Kartennummer:

import re
 
def checkVisaCardNo(cardNo):
    regex = "^4[0-9]{12}(?:[0-9]{3})?$"
    r = re.compile(regex)
 
    if (re.search(r, cardNo)):
        print("Valid")
    else:
        print("Not Valid")
 
card1 = "4539890694174109"
checkVisaCardNo(card1)
 
card2 = "49237429498"
checkVisaCardNo(card2)

Auch hier bestätigt die Ausgabe, dass die erste Zahl gültig ist, während die zweite ungültig ist:

RegEx zur Validierung der American Express-Kartennummer

Eine American Express-Kartennummer ist gültig, wenn sie die folgenden Bedingungen erfüllt:

  1. Die Zeichenfolge sollte keine Sonderzeichen, Buchstaben oder Leerzeichen enthalten.
  2. Die Anzahl der Zeichen muss 15 betragen.
  3. Die Zeichenfolge sollte mit 34 oder 37 beginnen.
  4. Die letzten 13 Ziffern müssen eine Zahl zwischen 0 und 9 sein.

Der folgende reguläre Ausdruck erfüllt die oben genannten Bedingungen und Sie können ihn zur Validierung einer American Express-Kartennummer verwenden:

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

Sie können eine American Express-Kartennummer mit dem folgenden Python-Code validieren:

import re
 
def checkAmericanExpressCardNo(cardNo):
    regex = "^3[47][0-9]{13}$"
    r = re.compile(regex)
 
    if (re.search(r, cardNo)):
        print("Valid")
    else:
        print("Not Valid")
 
card1 = "372831730491196"
checkAmericanExpressCardNo(card1)
 
card2 = "84732593847743042"
checkAmericanExpressCardNo(card2)

Die Ausgabe bestätigt erneut, dass die erste Zahl gültig, die zweite jedoch ungültig ist:

Anwendungen regulärer Ausdrücke

Sie können einen recht einfachen regulären Ausdruck verwenden, um gängige Kreditkartennummern zu validieren. RegEx ist ein leistungsstarkes Tool, das Sie zur Datenvorverarbeitung, zum Mustervergleich, zur Datenextraktion, zur lexikalischen Analyse, zur Verarbeitung natürlicher Sprache, zum Web-Scraping und mehr verwenden können. Sie können in der Webentwicklung auch reguläre Ausdrücke verwenden, um die Validierung von HTML-Formularen durchzuführen.

Verwandte Artikel: