2009-09-22 31 views

risposta

0

- Edit:

Infatti, io Parzialmente in disaccordo con me stesso e sono d'accordo con Cletus. Convalidare il più possibile (senza entrare nei dettagli di specifici tipi di carte di credito [IMHO]) prima di inviarlo. Ed è ovvio (si spera) che questa convalida debba essere eseguita in JavaScript, per renderlo veloce, quindi sul server, per ricontrollare (e per JavaScript disabilitato).

- risposta precedente:

Non preoccupatevi; lascia che sia il provider a verificarlo quando si tenta effettivamente il pagamento. Nessun motivo legittimo per provare a verificarlo da solo. Puoi usare lo this, se proprio ne hai voglia.

+6

Potrebbe non essere più d'accordo. I gateway di pagamento richiedono tempo. Dovresti fare tutto il possibile per assicurarti che sia valido prima di provare a usarlo. – cletus

+1

cletus: quindi esegui un controllo rapido usando il sistema Luhn, e ovviamente assicurati che tutti i dati richiesti ti vengano inviati prima di inviarlo. –

1

Penso che stiate cercando lo Luhn Algorithm. È una semplice formula di checksum utilizzata per convalidare una varietà di numeri di identificazione.

0

Ciò dipende dall'accuratezza della pre-convalida. Per convalidare tutto ciò che è possibile, è necessario calcolare quale dovrebbe essere l'ultima cifra della carta e confrontarla con quella immessa, che una RegEx non può fare.

Per l'algoritmo e altri dettagli si veda this link, che fornisce anche un elenco di prefissi comuni che si potrebbe convalidare contro.

13

Vedi questo link Finding or Verifying Credit Card Numbers con i clienti abituali espressioni

  • Visa:^4 [0-9] {12} (:? [0-9] {3})? $ Numeri di carta Visa Tutti Iniziamo con una 4. Le nuove carte hanno 16 cifre. Le vecchie carte hanno 13.
  • MasterCard:^5 [1-5] [0-9] {14} $ Tutti i numeri MasterCard iniziano con i numeri da 51 a 55. Tutti hanno 16 cifre.
  • American Express:^3 [47] [0-9] {13} $ I numeri delle carte American Express iniziano con 34 o 37 e hanno 15 cifre.
  • Diners Club:^3 (?: 0 [0-5] | [68] [0-9]) [0-9] {11} $ I numeri delle carte Diners Club iniziano da 300 a 305, 36 o 38. Tutti hanno 14 cifre. Ci sono le carte Diners Club che iniziano con 5 e hanno 16 cifre. Queste sono una joint venture tra Diners Club e MasterCard e dovrebbero essere elaborate come una MasterCard.
  • Scoprire:^6 (?: 011 | 5 [0-9] {2}) [0-9] {12} $ I numeri delle carte Discover iniziano con 6011 o 65. Tutti hanno 16 cifre.
  • JCB:^(?: 2131 | 1800 | 35 \ d {3}) \ d {11} $ Le carte JCB che iniziano con 2131 o 1800 hanno 15 cifre. Le carte JCB che iniziano con 35 hanno 16 cifre.

Ciao.

+1

Le schede Discover hanno aggiunto nuovi intervalli, ecco una espressione regolare aggiornata per le schede Discover '^ 6 (?: 0110 [0-9] | 011 [2-4] [0-9] | 01174 | 0117 [7-9 ] | 0118 [6-9] | 0119 [0-9] | 4 [4-9] [0-9] {3} | 5 [0-9] {4}) [0-9] {10} $ ' – realgt

+0

come su China UNion Pay? –

Problemi correlati