Ich weiß, dass einige CC regex sind:REGEX für Kreditkarte arbeitet nicht mit "oder"
- Visa:
^4[0-9]{12}(?:[0-9]{3})
- Mastercard:
^5[1-5][0-9]{14}
- Amex:
^3[47][0-9]{13}
- Diners Club:
^3(?:0[0-5]|[68][0-9])[0-9]{11}
Wenn ich sie einzeln versuche, funktionieren sie.
Aber wenn ich
^4[0-9]{12}(?:[0-9]{3}) | ^5[1-5][0-9]{14} | ^3[47][0-9]{13} | ^3(?:0[0-5]|[68][0-9])[0-9]{11}
tun bekam ich nur false
als Rückkehr. Sollte |
als OR
sein?
BTW, brauchen einen einzigen Regex für alle CC. Ich mache etwas falsch?
Wahrscheinlich die Räume es töten. –
Bist du sicher, dass du auch am Ende kein '$' brauchst? Probieren Sie '^ (?: 4 [0-9] {12} (?: [0-9] {3}) | 5 [1-5] [0-9] {14} | 3 [47] [0- 9] {13} | 3 (?: 0 [0-5] | [68] [0-9]) [0-9] {11}) $ ' –
Sie haben Leerzeichen in Ihren Ausdrücken. Behandelt Ihre regexp-Bibliothek die Leerzeichen nicht als übereinstimmende Zeichen? Wie im vorherigen Kommentar angegeben, müssen Sie den Suchmodus synchronisieren und '^' und '$' verwenden (es kann Anfang/Ende der Zeile oder Anfang/Ende eines vollständigen Textes entsprechen, den Sie an die Übereinstimmungsfunktion der Bibliothek übergeben Einstellungen/Implementierung) – Serge