E-Mail Regex Muster
Das obige Muster entspricht der großen Mehrheit der realen E-Mail Adressen. Es erfordert einen nicht leeren lokalen Teil mit alphanumerischen Zeichen und ._%+-, dann ein @, dann eine Domain mit mindestens einem Punkt, dann eine TLD mit zwei oder mehr Buchstaben. Zeilen, die übereinstimmen: user@example.com, alice.chen@company.co.uk, bob+tag@gmail.com. Zeilen, die nicht übereinstimmen: invalid@, @missing-local.com, no-at-sign.com, user@.com.
Aufschlüsselung des Musters
| Segment | Muster | Was übereinstimmt |
|---|---|---|
| Anfang Anker | ^ | Anfang jeder Zeile (mit Flag m) |
| Lokaler Teil | [a-zA-Z0-9._%+\-]+ | Buchstaben, Ziffern und ._%+- einer oder mehr |
| Klammeraffe | @ | Literales @ |
| Domain Labels | [a-zA-Z0-9.\-]+ | Domainname, Punkte und Bindestriche erlaubt |
| Punkt vor TLD | \. | Literaler Punkt |
| TLD | [a-zA-Z]{2,} | Zwei oder mehr Buchstaben (deckt .io, .museum, .co.uk zweites Label) |
| Ende Anker | $ | Ende jeder Zeile (mit Flag m) |
Häufige Fehler bei E-Mail Regex
Kein + im lokalen Teil zuzulassen ist das häufigste Problem. Gmail und viele andere Anbieter leiten user+tag@gmail.com an dasselbe Postfach weiter wie user@gmail.com, und viele Benutzer verlassen sich darauf für die Filterung. Ein Muster wie [a-zA-Z0-9._%-]+ lehnt diese Adressen stillschweigend ab.
Mehrstufige TLDs nicht zuzulassen ist der zweithäufigste Fehler. Ein Muster, das mit \.[a-zA-Z]{2,3} endet, lehnt alice@company.co.uk ab, weil es .co als die TLD ansieht.
Das Muster nicht mit ^ und $ zu verankern bedeutet, dass ein String wie ‘dies ist keine email enthält aber eine@example.com’ mit dem eingebetteten Fragment übereinstimmt. Bei der Validierung verankere immer den gesamten String oder die gesamte Zeile.
Das HTML5 E-Mail Muster
Browser wenden ihr eigenes Muster auf <input type="email"> an. Das tatsächlich von der HTML5 Spezifikation verwendete Muster ist:
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
Es ist deutlich großzügiger als das obige Muster, erlaubt mehr Sonderzeichen im lokalen Teil und unterstützt mehrstufige Domains. Es entspricht einem Großteil der RFC 5322 Spezifikation, ist aber dennoch nicht vollständig konform.
Teste deine E-Mail Muster mit Live-Ergebnissen im Regex Tester.