Un'espressione regolare è una sequenza di caratteri che forma un modello di ricerca. Le espressioni regolari vengono utilizzate principalmente per la ricerca, la convalida e la trasformazione di testi o stringhe.
Scopri come convalidare numeri di carte di credito come Mastercard, Visa Card e American Express con espressioni regolari.
Quando utilizzare RegEx per convalidare un numero di carta di credito?
I servizi di terze parti addebitano per ogni tentativo di transazione. Indipendentemente dal fatto che la transazione abbia esito positivo o meno, è necessario pagare le spese. In tali casi, si desidera rifiutare i numeri di carta di credito chiaramente non validi. Puoi convalidare rapidamente i numeri delle carte di credito utilizzando le espressioni regolari.
Ma non puoi fare completamente affidamento sulla convalida delle espressioni regolari per la tua funzione di pagamento. Gli emittenti di carte cambiano regolarmente i pattern dei numeri di carta (introducendo nuovi pattern o ritirando quelli vecchi), quindi il metodo regex non è la soluzione più solida. Anche se puoi provare a tenere il passo con i modelli di carte da una fonte come
Wikipedia che viene aggiornato di frequente.Puoi anche utilizzare espressioni regolari per trovare rapidamente il marchio della carta che puoi quindi utilizzare per visualizzare loghi o etichette.
Le espressioni regolari hanno diversi casi d'uso pratici. Il comando grep di Linux è probabilmente il caso d'uso pratico più comune di regex.
Il codice utilizzato in questo progetto è disponibile in a Deposito GitHub ed è gratuito per l'uso con la licenza MIT.
RegEx per convalidare il numero di Mastercard
Un numero Mastercard è valido se soddisfa le seguenti condizioni:
- La stringa non deve contenere caratteri speciali, lettere alfabetiche o spazi bianchi.
- Il numero di caratteri deve essere uguale a 16.
- La stringa deve iniziare con un intervallo di numeri a 2 cifre (da 51 a 55) o con un intervallo di numeri a 4 cifre (da 2221 a 2720).
- Se la stringa inizia con un intervallo numerico di 2 cifre (da 51 a 55), le successive 14 cifre devono essere un numero compreso tra 0 e 9.
- Se la stringa inizia con un intervallo numerico di 4 cifre (compreso tra 2221 e 2720), le successive 12 cifre devono essere un numero compreso tra 0 e 9.
La seguente espressione regolare soddisfa le condizioni di cui sopra e può convalidare un numero Mastercard:
^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}$
Se non ti senti a tuo agio con l'espressione sopra, dai un'occhiata una guida per principianti alle espressioni regolari Primo.
Puoi utilizzare la regex sopra per convalidare il numero Mastercard in qualsiasi linguaggio di programmazione. Ecco come farlo in Python:
importare Rif
defcheckMasterCardNo(cartaNo):
espressione regolare = "^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 = ricompilare (regex)Se (Rif.ricerca(R, cartaNo)):
stampa("Valido")
altro:
stampa("Non valido")carta1 = "5110762060017101"
checkMasterCardNo (carta1)
carta2 = "8632458236982734"
checkMasterCardNo (carta2)
L'esecuzione di questo codice confermerà che il primo numero è valido ma il secondo no:
RegEx per convalidare il numero di carta Visa
Un numero di carta Visa è valido se soddisfa le seguenti condizioni:
- La stringa non deve contenere caratteri speciali, lettere alfabetiche o spazi bianchi.
- La stringa dovrebbe iniziare con 4.
- Il numero di caratteri deve essere uguale a 13 o 16. Le vecchie carte Visa hanno 13 caratteri e quelle nuove hanno 16 caratteri.
- Se il numero di caratteri è uguale a 13, le ultime 12 cifre devono essere un numero compreso tra 0 e 9.
- Se il numero di caratteri è pari a 16, le ultime 15 cifre devono essere un numero compreso tra 0 e 9.
La seguente espressione regolare soddisfa le condizioni di cui sopra e puoi utilizzarla per convalidare un numero di carta Visa:
^4[0-9]{12}(?:[0-9]{3})?$
Di seguito è riportato l'approccio Python per convalidare un numero di carta Visa:
importare Rif
defcheckVisaCardNo(cartaNo):
espressione regolare = "^4[0-9]{12}(?:[0-9]{3})?$"
r = ricompilare (regex)Se (Rif.ricerca(R, cartaNo)):
stampa("Valido")
altro:
stampa("Non valido")carta1 = "4539890694174109"
checkVisaCardNo (card1)
carta2 = "49237429498"
checkVisaCardNo (card2)
Ancora una volta, l'output conferma che il primo numero è valido mentre il secondo non è valido:
RegEx per convalidare il numero di carta American Express
Un numero di carta American Express è valido se soddisfa le seguenti condizioni:
- La stringa non deve contenere caratteri speciali, lettere alfabetiche o spazi bianchi.
- Questo numero di caratteri deve essere uguale a 15.
- La stringa dovrebbe iniziare con 34 o 37.
- Le ultime 13 cifre devono essere un numero compreso tra 0 e 9.
La seguente espressione regolare soddisfa le condizioni di cui sopra e puoi utilizzarla per convalidare un numero di carta American Express:
^3[47][0-9]{13}$
Puoi convalidare un numero di carta American Express utilizzando il seguente codice Python:
importare Rif
defcheckAmericanExpressCardNo(cartaNo):
espressione regolare = "^3[47][0-9]{13}$"
r = ricompilare (regex)Se (Rif.ricerca(R, cartaNo)):
stampa("Valido")
altro:
stampa("Non valido")carta1 = "372831730491196"
checkAmericanExpressCardNo (card1)
carta2 = "84732593847743042"
checkAmericanExpressCardNo (card2)
Ancora una volta, l'output conferma che il primo numero è valido, ma il secondo non è valido:
Applicazioni delle espressioni regolari
Puoi utilizzare alcune espressioni regolari abbastanza semplici per convalidare i numeri di carta di credito comuni. RegEx è un potente strumento che puoi utilizzare per la pre-elaborazione dei dati, la corrispondenza dei modelli, l'estrazione dei dati, l'analisi lessicale, l'elaborazione del linguaggio naturale, il web scraping e altro ancora. È inoltre possibile utilizzare le espressioni regolari nello sviluppo Web per gestire la convalida dei moduli HTML.