alltools.one
Development‱
2025-06-15
‱
7 min
‱
alltools.one Team
RegexEmailValidationJavaScriptDevelopment

Regex fĂŒr E-Mail-Validierung: Muster, die tatsĂ€chlich funktionieren

E-Mail-Validierung ist einer der hĂ€ufigsten Regex-AnwendungsfĂ€lle — und einer der am meisten missverstandenen. Die RFC-5321-Spezifikation fĂŒr E-Mail-Adressen ist ĂŒberraschend komplex, und kein einzelner Regex kann sie vollstĂ€ndig validieren. Aber praktische Muster, die 99,9% der realen E-Mail-Adressen abdecken, sind sowohl erreichbar als auch nĂŒtzlich.

Das einfache Muster (Gut genug)

FĂŒr die meisten Anwendungen funktioniert dieses Muster gut:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Was es trifft: Ein oder mehrere erlaubte Zeichen, gefolgt von @, gefolgt von einer Domain mit mindestens einem Punkt und einer TLD von 2+ Buchstaben.

JavaScript:

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
emailRegex.test('user@example.com');  // true
emailRegex.test('user@.com');          // false

Testen Sie dieses Muster mit unserem Regex Tester.

Warum perfekte Regex-Validierung unmöglich ist

Die E-Mail-Spezifikation (RFC 5321/5322) erlaubt Strukturen, die gĂŒltig, aber in der Praxis im Wesentlichen nie verwendet werden:

"john..doe"@example.com           // Quoted local part with consecutive dots
user@[192.168.1.1]                // IP address as domain
"very.(),:;<>[]".VERY."very@\ "very".unusual"@strange.example.com

Ein Regex, der alle RFC-gĂŒltigen Adressen behandelt, ist Tausende von Zeichen lang und deckt möglicherweise immer noch nicht jeden Grenzfall ab. Der praktische Ansatz: Verwenden Sie einen einfachen Regex fĂŒr grundlegende Formatvalidierung und verifizieren Sie dann die E-Mail tatsĂ€chlich durch Senden einer BestĂ€tigung.

Muster-AufschlĂŒsselung

Lokaler Teil (vor @)

[a-zA-Z0-9._%+-]+
  • Buchstaben (Groß- und Kleinschreibung)
  • Ziffern
  • Punkte, Unterstriche, Prozent, Plus, Bindestrich
  • Ein oder mehrere Zeichen

HĂ€ufige Fehler:

  • Punkte am Anfang oder Ende erlauben (technisch ungĂŒltig)
  • Aufeinanderfolgende Punkte erlauben (technisch ungĂŒltig ohne Quoting)
  • Zu restriktiv sein (gĂŒltige Zeichen wie + fĂŒr Gmail-Aliase blockieren)

Domain-Teil (nach @)

[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
  • Alphanumerische Zeichen, Punkte, Bindestriche
  • Mindestens ein Punkt
  • TLD von 2+ alphabetischen Zeichen

HĂ€ufige Fehler:

  • TLD-LĂ€nge auf 3-4 Zeichen beschrĂ€nken (.museum, .photography existieren)
  • Bindestriche in Domain-Namen nicht erlauben
  • Subdomains nicht behandeln (user@mail.example.co.uk)

Bessere Muster

HTML5-Standard

Die HTML5-Spezifikation definiert dieses Muster fĂŒr <input type="email">:

^[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])?)*$

Dieses ist im lokalen Teil permissiver und bei Domain-Label-LĂ€ngen strikter.

Empfohlenes praktisches Muster

^[^\s@]+@[^\s@]+\.[^\s@]{2,}$

Dieses minimale Muster stellt einfach sicher: keine Leerzeichen, ein @, mindestens ein Punkt nach @, TLD von 2+ Zeichen. Es ist bewusst permissiv — offensichtlich falsche Eingaben abfangen, ohne ungewöhnliche, aber gĂŒltige Adressen abzulehnen.

Sprachspezifische Implementierung

JavaScript

function isValidEmail(email) {
  // Basic regex check
  const regex = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/;
  if (!regex.test(email)) return false;
  
  // Additional checks
  if (email.length > 254) return false;  // RFC 5321 limit
  const [local] = email.split('@');
  if (local.length > 64) return false;   // RFC 5321 limit
  
  return true;
}

Python

import re

def is_valid_email(email: str) -> bool:
    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    if not re.match(pattern, email):
        return False
    if len(email) > 254:
        return False
    local, domain = email.rsplit('@', 1)
    if len(local) > 64:
        return False
    return True

Über Regex hinaus: Richtige E-Mail-Validierung

Regex ist nur die erste Verteidigungslinie. Eine vollstÀndige Validierungsstrategie:

  1. FormatprĂŒfung (Regex): Offensichtlich ungĂŒltige Formate ablehnen
  2. LĂ€ngenprĂŒfung: Lokaler Teil ≀ 64 Zeichen, gesamt ≀ 254 Zeichen
  3. DNS-PrĂŒfung: ÜberprĂŒfen, ob die Domain MX-Records hat
  4. Wegwerf-E-Mail-Erkennung: TemporÀre E-Mail-Dienste bei Bedarf blockieren
  5. BestĂ€tigungs-E-Mail: Die einzige Möglichkeit, eine E-Mail wirklich zu verifizieren — eine Nachricht senden und bestĂ€tigen, dass der Benutzer sie erhĂ€lt
// DNS MX record check (Node.js)
const dns = require('dns');
const [, domain] = email.split('@');
dns.resolveMx(domain, (err, addresses) => {
  if (err || !addresses.length) {
    console.log('Domain has no email server');
  }
});

HĂ€ufige Fehler vermeiden

  1. Zu restriktive Muster: user+tag@gmail.com (Plus-Adressierung) oder user@subdomain.example.com blockieren
  2. Groß-/Kleinschreibung: E-Mail-Localparts können laut RFC case-sensitive sein, aber in der Praxis als case-insensitive behandeln
  3. Trimmen: Immer Whitespace vor der Validierung entfernen — " user@example.com " sollte bestehen
  4. Internationale Domains: .mĂŒnchen und 甚户@äŸ‹ăˆ.jp sind gĂŒltig in internationalisierter E-Mail

FĂŒr weitere Regex-Muster siehe unseren Regex-Spickzettel.

FAQ

Sollte ich E-Mail mit Regex auf dem Client oder Server validieren?

Beides. Client-seitige Validierung bietet sofortiges Feedback (bessere UX). Server-seitige Validierung ist fĂŒr die Sicherheit zwingend erforderlich (Client-PrĂŒfungen können umgangen werden). Vertrauen Sie niemals allein auf client-seitige Validierung.

Warum lehnen manche Websites meine gĂŒltige E-Mail-Adresse ab?

Zu restriktive Regex-Muster sind die ĂŒbliche Ursache. Adressen mit + (Gmail-Aliase), langen TLDs (.technology) oder Subdomains werden oft durch schlechte Validierung abgelehnt. Wenn Sie eine Website betreiben, verwenden Sie permissive Regex und verifizieren Sie stattdessen mit einer BestĂ€tigungs-E-Mail.

Verwandte Ressourcen

Published on 2025-06-15
Regex for Email Validation: Patterns That Actually Work | alltools.one