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 Dienste von Drittanbietern berechnen für jeden Transaktionsversuch. Unabhängig davon, ob die Transaktion erfolgreich ist oder nicht, müssen Sie die Gebühren bezahlen. In solchen Fällen möchten Sie eindeutig ungültige Kreditkartennummern ablehnen. Sie können Kreditkartennummern schnell mit regulären Ausdrücken validieren.

Aber Sie können sich für Ihre Zahlungsfunktion nicht vollständig auf die Validierung regulärer Ausdrücke verlassen. Kartenaussteller ändern regelmäßig ihre Kartennummernmuster (indem sie neue Muster einführen oder alte zurückziehen), daher ist die Regex-Methode nicht die robusteste Lösung. Obwohl Sie versuchen können, den Überblick über die Kartenmuster aus einer Quelle wie zu behalten

instagram viewer
Wikipedia das wird häufig aktualisiert.

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 a GitHub-Repository und steht Ihnen unter der MIT-Lizenz kostenlos zur Verfügung.

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 gleich 16 sein.
  3. Die Zeichenfolge sollte entweder mit einem 2-stelligen Zahlenbereich (von 51 bis 55) oder einem 4-stelligen Zahlenbereich (von 2221 bis 2720) beginnen.
    • Wenn die Zeichenfolge mit einem 2-stelligen Zahlenbereich (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 (von 2221 bis 2720), müssen die nächsten 12 Ziffern eine Zahl zwischen 0 und 9 sein.

Die folgende Regex 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 sich mit dem obigen Ausdruck nicht wohlfühlen, sehen Sie sich das an Ein Leitfaden für Anfänger zu regulären Ausdrücken Erste.

Sie können die obige Regex verwenden, um die Mastercard-Nummer in jeder Programmiersprache zu validieren. So geht das in Python:

importieren Betreff

defcheckMasterCardNr(Karten-Nr):
regulärer Ausdruck = "^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 = neu kompilieren (regex)

Wenn (Betreff.suchen(R, Karten-Nr)):
drucken("Gültig")
anders:
drucken("Ungültig")

Karte1 = "5110762060017101"
checkMasterCardNr (Karte1)

Karte2 = "8632458236982734"
checkMasterCardNr (Karte2)

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 Visakarten haben 13 Zeichen und die neuen 16 Zeichen.
    • Wenn die Anzahl der Zeichen gleich 13 ist, müssen die letzten 12 Ziffern eine Zahl zwischen 0 und 9 sein.
    • Wenn die Anzahl der Zeichen gleich 16 ist, müssen die letzten 15 Ziffern eine Zahl zwischen 0 und 9 sein.

Die folgende Regex erfüllt die obigen Bedingungen und Sie können sie verwenden, um eine Visa-Kartennummer zu validieren:

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

Unten ist der Python-Ansatz zur Validierung einer Visa-Kartennummer:

importieren Betreff

defcheckVisaCardNr(Karten-Nr):
regulärer Ausdruck = "^4[0-9]{12}(?:[0-9]{3})?$"
r = neu kompilieren (regex)

Wenn (Betreff.suchen(R, Karten-Nr)):
drucken("Gültig")
anders:
drucken("Ungültig")

Karte1 = "4539890694174109"
checkVisaCardNo (Karte1)

Karte2 = "49237429498"
checkVisaCardNo (Karte2)

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. Diese Anzahl von Zeichen muss gleich 15 sein.
  3. Die Zeichenfolge sollte mit 34 oder 37 beginnen.
  4. Die letzten 13 Ziffern müssen eine Zahl zwischen 0 und 9 sein.

Die folgende Regex erfüllt die obigen Bedingungen und Sie können sie verwenden, um eine American Express-Kartennummer zu validieren:

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

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

importieren Betreff

defcheckAmericanExpressCardNr(Karten-Nr):
regulärer Ausdruck = "^3[47][0-9]{13}$"
r = neu kompilieren (regex)

Wenn (Betreff.suchen(R, Karten-Nr)):
drucken("Gültig")
anders:
drucken("Ungültig")

Karte1 = "372831730491196"
checkAmericanExpressCardNo (Karte1)

Karte2 = "84732593847743042"
checkAmericanExpressCardNo (Karte2)

Wieder einmal bestätigt die Ausgabe, dass die erste Zahl gültig ist, aber die zweite ungültig ist:

Anwendungen regulärer Ausdrücke

Sie können einige ziemlich einfache reguläre Ausdrücke verwenden, um gängige Kreditkartennummern zu validieren. RegEx ist ein leistungsstarkes Tool, das Sie für Datenvorverarbeitung, Musterabgleich, Datenextraktion, lexikalische Analyse, Verarbeitung natürlicher Sprache, Web-Scraping und mehr verwenden können. Sie können auch reguläre Ausdrücke in der Webentwicklung verwenden, um die Validierung von HTML-Formularen zu handhaben.