Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Convalidare indirizzi e-mail con le espressioni regolari
Scritto da Andrea Chiarelli il 17-06-2011 ore 10:52
Seminario Intel
Uno dei primi esercizi che vengono eseguiti quando si impara l'uso delle espressioni regolari è la convalida di un indirizzo di posta elettronica. Lo schema è apparentemente abbastanza semplice: una sequenza alfanumerica seguita dal simbolo @ e che prosegue con un'altra sequenza alfanumerica che rappresenta un dominio valido. Una semplice espressione regolare, che descrive lo schema di un indirizzo di e-mail, è la seguente:
  1. ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
Questa espressione accetta indirizzi della forma nome.cognome@miodominio.com, ma accetta anche indirizzi di e-mail improbabili, come nome.cognome@dominio.qualsiasiestensione o anche a@b.c, mentre non accetta indirizzi validi come nome$@dominio.com. Un'espressione regolare con un maggiore grado di affidabilità dovrebbe essere un po' più complessa e prendere in considerazione tutte le combinazioni di caratteri previsti dalla relativa specifica, la RFC 822.

La sezione Email di RegExLib.com presenta diverse soluzioni per convalidare, con espressioni regolari, i più disparati modi di specificare un indirizzo di posta elettronica. Ad esempio, la seguente espressione è un po' più fiscale di quella vista prima, in quanto non accetta indirizzi come a@b.c mentre accetta nome$@dominio.com.
  1. ^(([^<>()[\]\\.,;:\s@\""]+(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z-0-9]+\.)+[a-zA-Z]{2,}))$
Nel caso si abbia necessità di convalidare una lista di indirizzi separati da virgole o punti e virgole, potremmo affidarci a una espressione del genere:
  1. ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*$
Se vogliamo invece gestire la visualizzazione di un nome a fianco all'e-mail, come in "Nome Cognome" <nome.cognome@dominio.com>, possiamo ricorrere alla seguente espressione regolare:

5841919886_68821686e2_b.jpg

Il record di complessità è detenuto però dall'implementazione di Mail::RFC822::Address, un modulo Perl per la convalida di e-mail basato su un'espressione regolare mastodontica, ma del tutto conforme alle specifiche RFC 822.
Precedente: Alcune stranezze di JavaScript
Successiva: Mozilla Webian Shell, l'alternativa a Chrome OS di Google?
Copyright Programmazione.it™ 1999-2014. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.212 secondi.