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.
Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!
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#informatico@informatico#.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.