Heim >Backend-Entwicklung >C++ >Warum reichen reguläre Ausdrücke für eine robuste E-Mail-Validierung nicht aus?
E-Mail-Validierung: Die Fallstricke regulärer Ausdrücke
Reguläre Ausdrücke (Regex) werden häufig für die E-Mail-Validierung verwendet, ihre Einschränkungen können jedoch zu ungenauen Ergebnissen führen. Lassen Sie uns die Schwächen eines typischen Regex-Ansatzes untersuchen.
Bedenken Sie dieses gängige Regex-Muster:
<code>@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"</code>
Dies versucht eine Übereinstimmung mit:
([w.-] )
: Der Teil des Benutzernamens (z. B. „Beispiel“).([w-] )
: Die Domäne (z. B. „com“).((.(w){2,3}) )$
: Top-Level-Domains (TLDs) – zwei oder drei Zeichen.Allerdings kann dieser reguläre Ausdruck viele legitime E-Mail-Adressen nicht validieren, wie zum Beispiel „user@[email protected]“.
Warum dieser Regex fehlschlägt:
Zuverlässigere Ansätze:
Nutzung der MailAddress
-Klasse: Die System.Net.Mail.MailAddress
-Klasse bietet eine robustere Lösung. Es verarbeitet eine größere Vielfalt an E-Mail-Formaten und verfügt über eine integrierte Fehlerbehandlung.
MailAddress.TryCreate
(für .NET 5): In .NET 5 und späteren Versionen bietet MailAddress.TryCreate
einen saubereren Ansatz. Es gibt einen booleschen Wert zurück, der Erfolg oder Misserfolg angibt und so die Validierung und Ausnahmeverwaltung vereinfacht.
Zusammenfassend lässt sich sagen, dass Regex zwar hilfreich sein kann, seine Einschränkungen bei der E-Mail-Validierung ihn jedoch unzuverlässig machen. Die Verwendung der Klasse MailAddress
oder MailAddress.TryCreate
bietet eine wesentlich robustere und genauere Methode zur Validierung von E-Mail-Adressen.
Das obige ist der detaillierte Inhalt vonWarum reichen reguläre Ausdrücke für eine robuste E-Mail-Validierung nicht aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!