RegEx: '^[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]+)*@([a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*\.)+([a-zA-Z]{2,})$';
1. Anfang und Ende des Strings
^: Beginn des Strings. Der Ausdruck prüft ab der ersten Zeichenposition.
$: Ende des Strings. Der gesamte String muss mit dem Muster übereinstimmen.
2. Lokaler Teil der E-Mail (vor dem @)
[_a-zA-Z0-9\-]+:
[ ]: Gibt eine Zeichengruppe an, die erlaubt ist:
_: Unterstrich
a-z: Kleinbuchstaben
A-Z: Großbuchstaben
0-9: Ziffern
\-: Bindestrich (das \ ist erforderlich, weil - sonst als Bereichsoperator interpretiert wird)
+: Mindestens ein Zeichen aus der Gruppe.
(\.[_a-zA-Z0-9\-]+)*:
\.: Ein Punkt (muss mit \ maskiert werden, da der Punkt in RegEx für "jedes Zeichen" steht).
[_a-zA-Z0-9\-]+: Gleiche Zeichen wie oben.
*: Null oder mehr Wiederholungen. Dadurch sind Subdomains im lokalen Teil möglich (z. B. user.name).
3. @-Zeichen
@: Das Literalzeichen @ trennt den lokalen Teil von der Domain.
4. Domainname
([a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*\.)+:
[a-zA-Z0-9]+: Ein oder mehrere Buchstaben oder Ziffern.
(\-[a-zA-Z0-9]+)*:
\-: Ein Bindestrich.
[a-zA-Z0-9]+: Gefolgt von Buchstaben oder Ziffern.
*: Null oder mehr Wiederholungen (Bindestriche sind optional, z. B. my-domain).
\.: Ein Punkt, der die Domainteile trennt.
+: Mindestens ein Domainabschnitt (z. B. example.com, sub.example.com).
5. Top-Level-Domain (TLD)
([a-zA-Z]{2,}):
[a-zA-Z]: Buchstaben.
{2,}: Mindestens zwei Zeichen (z. B.
com, org, de).