Du willst gar nicht prüfen, ob die Adresse RFC 5322 konform ist, glaub mir. Du willst in Wirklichkeit etwas ganz anderes Wissen:
- Kann ich den Benutzer über diese Adresse kontaktieren?
- Ist seine Eingabe schädlich für die damit arbeitenden Scripte?
- Hat sich der Benutzer vertippt? Kann ich ihm helfen, seinen Fehler zu bemerken?
Punkt 1 ist unmöglich mit einer bloßen Betrachtung der Adresse zu beantworten. Du musst schon eine E-Mail schicken oder wenigstens den zuständigen Mail-Server fragen, ob die Adresse existiert. Das können echte MTAs (Mail Transfer Agent) in der Regel am besten. "Live" geht das sowieso nicht, da viele Mailserver solche Fragen erst nach einer beachtlichen Wartezeit beantworten, um Spam zu vermeiden (Greylisting).
Für Punkt 2 reicht es meistens aus, Steuer- und Whitespace Zeichen zu verbieten oder einfach raus zu filtern und den String je nach Speichermedium sauber zu escapen. Kein großer Aufwand.
Für Punkt 3 wäre ein regulärer Ausdruck schon genau das richtige, aber bei weitem nicht so komplex wie in den verlinkten Beispielen. Tippfehler kann man eh nie ganz verhindern (Buchstabendreher z.B.) also warum sollte man es versuchen? Sowas wie r'.+@.+\..+' reicht denke ich völlig. Wer wirklich auf Nummer sicher geben will, lässt den User die Adresse zwei mal eintippen.
Und noch was generelles: Nette User geben keinen 'illegalen Adressen' ein und verstoßen auch nicht gegen Standards, sondern vertippen sich einfach. Die Fehlermeldung sollte darauf ein gehen. Ein "This doen't look like an e-mail address to me. Are you sure?" klingt viiiiel netter als die so beliebte "Wrong/Illegal/Invalid Address" Fehlermeldungen.