Saltar al contenido principal
eLearner.app
Módulo 8 · Lección 1 de 429/32 en el curso~12 min
Lecciones del módulo (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.

Code
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

Ejercicio#regex.m8.l1.e1
Intentos: 0Cargando...

Riconosci ogni email nel testo. Usa un pattern semplice: lettere/cifre/punti prima della @, dominio con almeno un punto.

Cargando editor...
Mostrar pista

Allarga la parte locale a [\\w.+-]+ e il dominio a [\\w-]+\\.[\\w.-]+ per accettare TLD multipli.

Solución disponible después de 3 intentos

Esercizio di ripasso

Ejercicio#regex.m8.l1.e2
Intentos: 0Cargando...

Cattura il dominio (parte dopo la @) di ogni email come gruppo nominato `dominio`.

Cargando editor...
Mostrar pista

Avvolgi la parte del dominio in un gruppo nominato: (?<dominio>[\\w.-]+).

Solución disponible después de 3 intentos

Sfida aggiuntiva

Ejercicio#regex.m8.l1.e3
Intentos: 0Cargando...

Trova la parte del dominio di un'email (tutto ciò che segue la `@`), escludendo la `@` tramite lookbehind.

Cargando editor...
Mostrar pista

Usa un lookbehind positivo (?<=@) davanti alla classe dei caratteri di dominio.

Solución disponible después de 3 intentos