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