Zugegeben, es ist nicht ganz einfach, und auch Ansätze gibt es einige…
Ich will hier daher nur einen möglichen Lösungsweg kurz aufzeigen:

eine minimalistische Email Adresse wäre z.B.

a@bc.de

diese wäre relativ einfach abbildbar mit dem Ausdruck:

[a-z]+@[a-z]+\.de

trifft allerdings nur DE-Domains und beinhaltet keine Sonderzeichen wie „.“ und „-“ die in Emails eigentlich auch erlaubt sind. Daher betrachten wir folgende – bereits sehr ausgefallene – Email:

meine.email-adresse.die.ist.richtig@mantronic.de

der offizielle Standard für eine Email wäre der ausgesprochen lange Ausdruck:

(?:[a-z0-9!#$%&’*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&’*+/=?^_`{|}~-]+)*|“(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*“)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

der allerdings auch eine Adresse wie de@de.dede treffen würde, wobei die Endung „dede“ gar nicht existiert.

Diesen smarten Ausdruck dagegen findet man häufiger:

\b[a-z0-9._%+-]+@(?:[a-z0-9-]+\.)+[a-z]{2,4}\b

wiederrum fehlen dabei aber die Emails mit Endung .museum

auch sehr schön finde ich noch diesen kreierten Ausdruck:

/^[^0-9][A-z0-9_-]+([.][A-z0-9_-]+)*[@][A-z0-9_-]+([.][A-z0-9_-]+)*[.][A-z]{2,4}$/

—–
FAZIT: wie man es auch dreht und wendet, es ist nicht immer möglich, 100% der Emails mit einem RegEx Ausdruck zu erkennen. Man muss einfach Abstriche ziehen, entweder ewig ausprobieren oder aber damit leben und 4% der exotischen Email Adressen einfach aussperren :-(

Weitere Infos gibts hier: http://www.regular-expressions.info/email.html

…und zum Schluss ein sehr gelungenes Tool zum online Analysieren gibts hier: http://gskinner.com/RegExr