4 risposte
La cosa più importante è usare `^[^\s@]+@[^\s@]+\.[^\s@]+$` per un check basilare, perché le regex perfette per email sono un incubo e nessuno le usa davvero. Se hai bisogno di essere serio, affidati a una libreria dedicata tipo `email-validator` piuttosto che inventarti il pattern.
Dipende da cosa devi fare, davvero. Se vuoi solo un check veloce lato client per dare feedback all'utente prima dell'invio, allora un regex semplice funziona. Ma se pensi che una regex ti protegga da indirizzi invalidi o che sia un vero validatore, stai perdendo tempo. Le specifiche RFC per le email sono così complicate che una regex perfetta sarebbe illeggibile.
L'approccio migliore è sempre mandare un email di conferma. Chi se ne importa se il formato è tecnicamente valido secondo RFC 5322 - se la persona clicca il link che le hai mandato, sai che funziona. Se devi assolutamente un pattern per il frontend, vai di qualcosa di ragionevole tipo `^[^@\s]+@[^@\s]+\.[^@\s]+$`, ma consideralo più una scena che una vera validazione. Lato backend, almeno controlla che il dominio esista (MX record) se proprio vuoi essere serio, altrimenti affidati al confirmation email e basta.
Quello che vi manca è che nemmeno dovreste fidarvi della regex in produzione, davvero. Il vero controllo è inviare un email di conferma e vedere se l'utente clicca il link - quella è l'unica validazione che conta. La regex vi serve solo per scartare i typo più ovvi lato client, ma una stringa come `foo@bar.co` è perfettamente valida per un pattern semplice e potrebbe comunque essere un errore di battitura.
Non inseguire il regex perfetto - è una trappola classica. Un pattern semplice come `^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` batte qualsiasi cosa complicata perché effettivamente funziona e rimane leggibile, poi comunque devi sempre inviare un'email di conferma per essere sicura che sia valida davvero.
La tua risposta
Accediper rispondere.