Ich habe diese Frage , aber für die Discover-Karte sind die Anfangsziffern 6011, 622126-622925, 644-649, 65
und nicht nur 6011, 65
. ( Quelle )
Für Discover-Karten habe ich diesen Regex aus der Frage ^6(?:011|5[0-9]{2})[0-9]{12}$
Ich habe es so modifiziert, dass es 6011
, 644-649
& amp; 65
, aber für 622126-622925
, ist das Bauen von Regex schwierig, weil ich schlechte Regex-Fähigkeiten habe.
Ich habe diese Regex bisher 6(?:011|5[0-9]{2}|[4][4-9][0-9]|[2]{2}[1-9])[0-9]{2}$
, aber es wird nur nach 622[1-9]**
gesucht.
Wie ändere ich es so, dass es nur zwischen 622126-622925
für 622***
case akzeptiert?
Hier ist Ihre Regex (Demo) :
%Vor%Es ist unnötig zu sagen, dass ich das nicht schön oder einfach pflegen werde. Ich würde empfehlen, die Zahl als Integer zu analysieren und Ihre Programmiersprache zu verwenden, um die Überprüfungen durchzuführen.
Sie sollten auch den Luhn-Algorithmus verwenden, um zu überprüfen, ob die Kreditkartennummer gültig ist, und solange Sie können theoretisch mache das mit regex, es wäre um ein Vielfaches schlechter als das.
Gestatten Sie mir, Ihnen zu zeigen, wie ich Schritt für Schritt zu dieser Monstrosität gekommen bin. Zuerst, hier ist, wie Sie jeden dieser Bereiche zusammenpassen:
%Vor%Nun möchten Sie die restlichen Ziffern anpassen:
%Vor%Jetzt können Sie alle vier kombinieren und Anfangs- und Endezeilenanker hinzufügen:
%Vor% Das letzte Produkt oben ist eine etwas kompaktere Version der vorherigen Regex, und ich habe auch Gruppen nicht erfassen lassen (das ist es, wofür diese ?:
sind).
Hier sind Ihre Optionen:
Als Referenz wäre eine solche komplizierte Regex
62212[6-9]|6221[3-9]|622[1-8]|62291|62292[1-5]
Tags und Links regex