Come validare un’e-mail con le espressioni regolari

di Lorenzo Neri
0 commento 108 visualizzazioni

La validazione delle e-mail è qualcosa di essenziale per le registrazioni e i login: in questo articolo scopriamo come validare un’e-mail con le espressioni regolari!

Spesso e volentieri, può essere una frustrazione cercare di capire come validare al 100% un’e-mail, specialmente se devi realizzare un sistema di login e registrazione utenti.

Esistono tanti metodi, ma molti potrebbero non essere sicuri del tutto. Può capitare che ti dimentichi qualcosa, non hai pensato a un’alternativa, magari non hai considerato i punti, eccetera.

Esistono tuttavia delle regole generali che si sono rivelate efficaci, altre no.

RFC 822 un mantra inefficiente

Prima di arrivare alla soluzione finale, è probabile che tu ti sia imbattuto sull’RFC822: mi tocca dirti che allo stato di oggi si rivelato inefficiente perché troppo lungo e qui ti lascio un articolo in merito.

Chiarito questo, arriviamo alla soluzione valida al 99,9%!

RFC5322 la soluzione valida

Si tratta di un’espressione regolare valida al 99,9% per validare le e-mail e di fatto si trova proprio in cima al sito web emailregex.com: anche qui ti lascio le referenze.

Ciò detto, vediamo come è strutturata l’espressione regolare per validare le e-mail:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

Questo è lo schema generale dell’espressione regolare, tuttavia cambia da linguaggio a linguaggio.

Questo perché i linguaggi di programmazione variano le proprie regole sintattiche uno ad uno.

Ma non ti preoccupare! Sempre qui trovi tutte le varianti per i principali linguaggi di programmazione dove ti tornerà comodo questo trucco 😀

Tuttavia, è giusto spiegarti le cose al 100%. Perchè abbiamo visto come validare un’e-mail con le espressioni regolari, ma c’è un problemino.

Questo metodo non funziona al 100%, ma al 99,9%

Ci sono alcune regole sintattiche che quell’espressione regolare non riesce a validare.

Per farti un esempio:

email#test@test#.it

Questo indirizzo e-mail, non è affatto valido.

Sarà raro che un utente metta dei cancelletti all’interno della propria e-mail, ma il vero problema è che questa espressione regolare non è in grado di stabilire pattern con caratteri speciali all’interno delle stringhe.

Il motivo è semplice: questa soluzione si basa sul concetto che di solito un utente non ne usa affatto.

Potrebbero interessarti

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più