Trovare o verificare i numeri di carta di credito

RegexMagic-Generare espressioni regolari corrispondenti ai numeri di carta di credito

Con poche semplici espressioni regolari, è possibile verificare facilmente se il cliente ha inserito un numero di carta di credito valido sul modulo d’ordine. È anche possibile determinare il tipo di carta di credito utilizzata. Ogni emittente della carta ha una propria gamma di numeri di carta, identificati dalle prime 4 cifre.

È possibile utilizzare un’espressione regolare leggermente diversa per trovare i numeri di carta di credito, o sequenze di numeri che potrebbero essere numeri di carta di credito, all’interno di documenti più grandi. Questo può essere molto utile per dimostrare in un controllo di sicurezza che non stai esponendo in modo improprio i dettagli finanziari dei tuoi clienti.

Inizieremo con il modulo d’ordine.

Stripping Spazi e trattini

Il primo passo è quello di rimuovere tutti i non-cifre dal numero di carta inserito dal cliente. Le carte di credito fisiche hanno spazi all’interno del numero della carta per raggruppare le cifre, rendendo più facile per gli esseri umani leggere o digitare. Quindi il modulo d’ordine dovrebbe accettare numeri di carta con spazi o trattini in essi.

Per rimuovere tutte le cifre non dal numero della carta, è sufficiente utilizzare la funzione “sostituisci tutto” nel linguaggio di scripting per cercare la regex + e sostituirla con nulla. Se si desidera solo sostituire spazi e trattini, è possibile utilizzare +. Se questa regex sembra strana, ricorda che in una classe di caratteri, il trattino è letterale quando si verifica subito prima della parentesi di chiusura (o subito dopo la parentesi di apertura o la negazione del segno di omissione).

Se ti stai chiedendo a cosa serve il vantaggio: è per le prestazioni. Se l’input ha cifre non consecutive, come 1 = = = 2, allora + corrisponde ai tre segni uguali contemporaneamente e li elimina in un’unica sostituzione. Senza il plus, sarebbero necessarie tre sostituzioni. In questo caso, i risparmi sono solo pochi microsecondi. Ma è una buona abitudine mantenere l’efficienza regex nella parte posteriore della tua mente. Anche se i risparmi sono minimi qui, così è lo sforzo di digitare il plus extra.

Convalida dei numeri di carta di credito sul modulo d’ordine

La convalida dei numeri di carta di credito è il lavoro ideale per le espressioni regolari. Sono solo una sequenza di 13 a 16 cifre, con alcune cifre specifiche all’inizio che identificano l’emittente della carta. Puoi utilizzare le espressioni regolari specifiche riportate di seguito per avvisare i clienti quando tentano di utilizzare un tipo di carta che non accetti o per instradare gli ordini utilizzando carte diverse a processori diversi. Tutte queste regex sono state prese dalla libreria di RegexBuddy.

  • Visto: ^4{12} (?:{3})?$ Tutti i numeri delle carte Visa iniziano con un 4. Le nuove carte hanno 16 cifre. Le vecchie carte hanno 13.
  • MasterCard: ^(?:5{2}|222|22|2{2}|27|2720){12}$ I numeri MasterCard iniziano con i numeri da 51 a 55 o con i numeri da 2221 a 2720. Tutti hanno 16 cifre.
  • American Express: ^3{13}$ i numeri delle carte American Express iniziano con 34 o 37 e hanno 15 cifre.
  • Diners Club: ^3 (?:0/) {11} numbers I numeri delle carte Diners Club iniziano da 300 a 305, 36 o 38. Tutti hanno 14 cifre. Ci sono carte Diners Club che iniziano con 5 e hanno 16 cifre. Si tratta di una joint venture tra Diners Club e MasterCard, e dovrebbero essere trattati come una MasterCard.
  • Scopri: ^6(?:011/5{2}){12}$ Scopri numeri di carta iniziano con 6011 o 65. Tutti hanno 16 cifre.
  • JCB: ^(?: 2131/1800/35\d{3})\d{11} cards le carte JCB che iniziano con 2131 o 1800 hanno 15 cifre. Le carte JCB che iniziano con 35 hanno 16 cifre.

Se vuoi solo verificare se il numero della carta sembra valido, senza determinare il marchio, puoi combinare le sei regex precedenti usando l’alternanza. Un gruppo non catturante mette le ancore al di fuori dell’alternanza. La spaziatura libera consente ai commenti e alla regex di adattarsi alla larghezza di questa pagina.

^(?:4{12}(?:{3})? # Visto
| (?: 5 {2} # MasterCard
| 222/22/2{2}|27|2720){12}
| 3{13} # American Express
/ 3(?:0/) {11} # Diners Club
| 6(?:011/5{2}){12} # Scopri
/ (?2131/1800/35 \ d{3}) \ d{11} # JCB
)$

Queste espressioni regolari cattureranno facilmente i numeri che non sono validi perché il cliente ha inserito troppe o troppe poche cifre. Non prenderanno numeri con cifre errate. Per questo, è necessario seguire l’algoritmo Luhn, che non può essere fatto con una regex. E naturalmente, anche se il numero è matematicamente valido, ciò non significa che sia stata emessa una carta con questo numero o che ci siano soldi nel conto. Il vantaggio o l’espressione regolare è che puoi inserirlo in un po ‘ di JavaScript per verificare immediatamente gli errori evidenti, invece di far sì che il cliente attenda 30 secondi affinché il processore della tua carta di credito fallisca l’ordine. E se il processore della tua carta addebita transazioni fallite, vorrai davvero implementare sia la regex che la convalida Luhn.

Trovare i numeri di carta di credito nei documenti

Con due semplici modifiche, è possibile utilizzare una qualsiasi delle espressioni regolari di cui sopra per trovare i numeri di carta in documenti più grandi. Basta sostituire il cursore e il dollaro con un limite di parole come in \ b4 {12} (?:{3})?\ b.

Se hai intenzione di cercare un server di documenti di grandi dimensioni, un’espressione regolare più semplice velocizzerà la ricerca. A meno che la tua azienda non utilizzi numeri a 16 cifre per altri scopi, avrai pochi falsi positivi. La regex\b \ d{13,16} \ b troverà qualsiasi sequenza da 13 a 16 cifre.

Quando si cerca un disco rigido pieno di file, non è possibile rimuovere spazi e trattini prima come è possibile quando si convalida un singolo numero di carta. Per trovare i numeri di carta con spazi o trattini in essi, utilizzare \ b (?: \ d*?) {13,16}\b. Questa regex consente qualsiasi quantità di spazi e trattini in qualsiasi punto del numero. Questo è davvero l’unico modo. Visa e MasterCard mettono le cifre in gruppi di 4, mentre Amex e Discover usano gruppi di 4, 5 e 6 cifre. Le persone che entrano i numeri possono avere idee diverse ancora.

Fai una donazione

Questo sito ti ha fatto risparmiare un viaggio in libreria? Si prega di fare una donazione per sostenere questo sito, e si otterrà una vita di accesso senza pubblicità a questo sito!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Previous post Diventare un tecnico veterinario in Wisconsin
Next post Process Art vs. Product Art in Early Childhood Education