Lezioni del modulo (1/4)
Validare un’email
Validare un'email "correttamente" e' un problema molto piu' difficile di quanto sembri: la RFC 5322 e' un mostro. In pratica scegliamo un pattern abbastanza buono che accetta i casi comuni e rifiuta quelli ovviamente sbagliati.
Pattern: ^[\w.+-]+@[\w-]+(?:\.[\w-]+)+$[\w.+-]+-- parte locale: lettere, cifre,_,.,+,-.@-- separatore.[\w-]+(?:\.[\w-]+)+-- dominio + almeno un TLD separato da..
Cosa accetta: mario.rossi@example.com, foo+bar@sub.example.co.uk,
user_123@test-domain.io.
Cosa rifiuta: mario@, @example.com, mario@example (no TLD), spazi.
Compromessi
Il pattern sopra non accetta:
- Stringhe quotate
"strane (cose)"@example.com(RFC permette). - Domini con caratteri Unicode (
\u00fcber@m\u00fcnchen.de). - TLD molto lunghi che non passano
\w(es. internazionalizzati).
Se ti servono, allarga la classe a \p{L} con flag u, oppure delega a una
libreria specializzata.
Compromessi e best practice per validare email
Nessuna regex può garantire l'esistenza reale di una casella email. I pattern troppo complessi degradano le prestazioni ed escludono domini legittimi insoliti. È preferibile usare una validazione di base per scartare errori macroscopici e inviare un codice di verifica.
Prova tu
Riconosci ogni email nel testo. Usa un pattern semplice: lettere/cifre/punti prima della @, dominio con almeno un punto.
Mostra suggerimento
Allarga la parte locale a [\\w.+-]+ e il dominio a [\\w-]+\\.[\\w.-]+ per accettare TLD multipli.
Soluzione disponibile dopo 3 tentativi
Esercizio di ripasso
Cattura il dominio (parte dopo la @) di ogni email come gruppo nominato `dominio`.
Mostra suggerimento
Avvolgi la parte del dominio in un gruppo nominato: (?<dominio>[\\w.-]+).
Soluzione disponibile dopo 3 tentativi
Sfida aggiuntiva
Trova la parte del dominio di un'email (tutto ciò che segue la `@`), escludendo la `@` tramite lookbehind.
Mostra suggerimento
Usa un lookbehind positivo (?<=@) davanti alla classe dei caratteri di dominio.
Soluzione disponibile dopo 3 tentativi