Eine fast perfekte Javascript Funktion zur Überprüfung einer Email auf Gültigkeit.
Auf fast jeder Homepage gibt es ein Kontaktformular in dem eine Email Adresse abgefragt wird.
Es gibt viele Möglichkeiten, eine Email Adresse auf Gültigkeit zu überprüfen.
- die Einfachste: Prüfen, ob ein ‘@’ und ein ‘.’ enthalten sind.
- es gibt kompliziertere Prüfungen mit Regular Expressions.
- es gibt Kombinationen aus RegEx-Prüfungen und einer Liste gültiger Top-Level-Domains (TLDs), die allerdings gepflegt werden muss, denn es kommen ja regelmäßig neue Domains hinzu.
- und wer 100%ig sicher gehen will, baut im Hintergrund eine Verbindung zum Mailserver auf und überprüft, ob eine Mail angenommen werden würde.
Alle Methoden haben Vor- und Nachteile.
Unser Vorschlag ist einfach, schnell aber nur fast perfekt
Wir möchten Ihnen hier unsere Idee für eine Email-Prüfung vorstellen:
Wir verwenden eine der hier: Regular Expressions vorgestellten Prüfungen und haben sie an die limitierten Möglichkeiten von Javascript angepasst. Außerdem prüfen wir nicht auf eine gültige TLD - ganz einfach deshalb, weil das regelmäßige Aktualisieren einer solchen Liste in der Realität nicht stattfindet. ;)
Diese Email-Validierung hat deshalb aktuell drei Einschränkungen:
- Ungültige Top-Level-Domains werden nicht erkannt.
- domainEndsWithDash@domain-.com wird als gültig erkannt.
- local@SecondLevelDomainNamesAreInvalidIfTheyAreLongerThan64Charactersss.org wird als gültig erkannt.
In diesen 3 Fällen wird eine Email als gültig geprüft, obwohl sie es eigentlich nicht ist. Für jeden dieser drei Fälle müsste ein extrem hoher Aufwand betrieben werden, ihn zu erkennen.
Wer mit diesen 3 ‘false positives’ leben kann, der kann dieser Routine zur Email-Validierung gerne benutzen:
String.prototype.isEmail = function () {
var validmailregex = /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.([a-z][a-z]+)|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
return validmailregex.test(this);
}
So wird eine Email auf Gültigkeit geprüft:
var eineEmail = "test.name@eine-domain.de";
if (!eineEmail.isEmail()) {
alert("Diese Email ist ungültig!");
}