Dr.Web - Das Online Magazin für Seitenbetreiber

Falsch oder echt? Email-Check mit JavaScript

Werbung

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:

Eingabe: Testen
Ausgabe:

Verwandte Artikel

Bookmarken! Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • TwitThis
  • Hype
  • StumbleUpon
  • Facebook
  • Google Bookmarks
  • Linkarena
abstimmenabstimmenabstimmenabstimmenabstimmen (No Ratings Yet)

3 Kommentare zu “Falsch oder echt? Email-Check mit JavaScript”

  1. 1
    25.11.2009 13:42

    Hallo da :)

    Also finde die Funktion als Solches recht gut (Danke), doch könnten Sie den Code vielleicht noch etwas "verkürzen"? ^_^

    Freundlichen Gruss
    Marco

    Antwort

  2. 2
    14.07.2010 19:43

    Hallo, vielen Dank für die Funktion. Dies habe ich jetzt schon bei mehren Webseiten im Einsatz. Grüße Nico

    Antwort

  3. 3
    Luator
    24.07.2010 13:44

    Sie sollten beachten, dass nach RFC2822 die Regeln für Emailadressen weitaus komplexer sind. Auch wenn zB bei gmx, web.de, googlemail, etc meist nur die Sonderzeichen ._- erlaubt sind, ist etwa ~{|}~@example.com eine korrekte Emailadresse und auch soetwas wie "Foo Bar"@example.com ist möglich.

    Siehe: http://de.wikipedia.org/wiki/E

    Antwort

Meine Meinung

Bitte beachten Sie: Werbung und Spam sind unerwünscht und können eine Rechnung zur Folge haben. Woher kommen die Bilder neben den Kommentaren?