Falsch oder echt? Email-Check mit JavaScript
von Jan Winkler
Beim Ausfüllen des unvermeidlichen Online-Formulars wird vom Besucher oft die falsche Email-Adresse angegeben. Die einen bleiben lieber anonym, die anderen haben schlicht die falsche Taste erwischt - sehr zum Leidwesen des Webmasters. Wer sich nicht länger ärgern lassen will, lässt sich mit Javascript helfen.
Email-Adressen setzen sich aus aus vier Bestandteilen zusammen. Diese müssen wir überprüfen. Zuerst der Benutzername, dann das @-Zeichen, die Domain sowie die Top Level Domain, kurz TLD genannt (.de, .com, .net ...).
Im Test werden wir Reguläre Ausdrücke verwenden. Es ist also vorher zu prüfen, ob diese überhaupt unterstützt werden. Erschwerend kommt hinzu, dass Name, Domain und TLD nur aus bestimmten Zeichen bestehen und eine gewisse Mindestlänge erfüllen sollten - auch das müssen wir prüfen.
Aufbau
Der Ablauf sieht wie folgt aus: Als erstes folgt ein Test, ob Reguläre Ausdrücke unterstützt werden, danach eine Unterteilung in zwei Varianten - ob mit und ohne Reguläre Ausdrücke. Der Test mit den Varianten ist recht einfach. Bei der Variante ohne Reguläre Ausdrücke wird geprüft, ob das @-Zeichen vorhanden ist, wo es steht und ob danach ein Punkt (Domain.TLD) folgt. Ist alles okay, soll die Funktion
true
false
function EMail(s)
{
var a = false;
var res = false;
if(typeof(RegExp) == 'function')
{
var b = new RegExp('abc');
if(b.test('abc') == true){a = true;}
}
if(a == true)
{
/* ... Prüfen mit RegExp ... */
}
else
{
/* ... Prüfen ohne RegExp ... */
}
return(res);
}
Prüfen
Für das Prüfen mit Regulären Ausdrücken werden wir den folgenden Ausdrück verwenden:
^([a-zA-Z0-9\-\.\_]+)(\@)
([a-zA-Z0-9\-\.]+)(\.)([a-zA-Z]{2,4})$
Im Einzelnen beschreibt dieser den Benutzernamen, ein @-Zeichen, die Domain, einen Punkt und zwei (.de) bis vier (etwa .info) Zeichen für die TLD. Bei der zweiten Variante werden wir die zerteilten Stücke der Adresse auf ihre Länge prüfen
...
if(a == true)
{
reg = new RegExp('^([a-zA-Z0-9\-\.\_]+)'+
'(\@)([a-zA-Z0-9\-\.]+)'+
'(\.)([a-zA-Z]{2,4})$');
res = (reg.test(s));
}
else
{
res = (s.search('@') >= 1 &&
s.lastIndexOf('.') > s.search('@') &&
s.lastIndexOf('.') >= s.length-5)
}
...
Das Resultat
Das Resultat ist die unten stehende Funktion. Ihr wird der zu prüfende String übergeben. Sie erhalten - je nach Richtigkeit der Adresse - true bzw. false.
function EMail(s)
{
var a = false;
var res = false;
if(typeof(RegExp) == 'function')
{
var b = new RegExp('abc');
if(b.test('abc') == true){a = true;}
}
if(a == true)
{
reg = new RegExp('^([a-zA-Z0-9\-\.\_]+)'+
'(\@)([a-zA-Z0-9\-\.]+)'+
'(\.)([a-zA-Z]{2,4})$');
res = (reg.test(s));
}
else
{
res = (s.search('@') >= 1 &&
s.lastIndexOf('.') > s.search('@') &&
s.lastIndexOf('.') >= s.length-5)
}
return(res);
}
Testen Sie selbst:









