0251 / 590 837 15

Kluge E-Mail Adressen Validation

Beim Ausfüllen eines Formulars wird oftmals - absichtlich oder unabsichtlich - eine Falsche E-Mail Adresse angegeben. Ein kleines Script kann Ihnen helfen zu prüfen, ob es sich wirklich um eine E-Mail Adresse handelt oder nicht. Wie das geht erfahren Sie hier.

Voraussetzungen

Zuerst sollten wir einmal nachdenken, wie eine E-Mail Adresse denn überhaupt aussieht. Allgemein gesehen besteht sie aus 4 Teilen, die wir überprüfen müssen: dem Benutzernamen, einem @, der Domain sowie der TLD (de, com, net ...). Zum testen werden wir Reguläre Ausdrücke verwenden - sollten also vorher prüfen, ob diese überhaupt unterstützt werden. Als Schwierigkeit kommt ausserdem hinzu, dass Name, Domain und TLD nur aus bestimmten Zeichen bestehen dürfen und eine gewisse mindestlänge erfüllen sollten - auch das müssen wir prüfen.

Aufbau

Der Aufbau wird wie folgt realisiert: Als erstes ein Test, ob Reguläre Ausdrücke unterstützt werden. Dann eine Unterteilung in zwei Varianten: mit und ohne Regulären ausdrücken. Mit ihnen brauchen wir nur einen einfachen Test durchführen um zu wissen ob es sich um eine E-Mail-Adresse handelt. Bei der Variante ohne Reguläre Ausdrücke werden wir die prüfen, ob ein @-Zeichen vorhanden ist, wo es steht und ob danach ein Punkt (Domain.TLD) folgt. Ist alles O.K. soll die Funktion true ausgeben, ansonsten false. Der Aufbau wird erstmal so umgesetzt:

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 @, die Domain, einen Punkt und 2 (z.B. de) bis 4 (z.B. 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 untenstehende Funktion, Ihr wird der zu prüfende String übergeben und man erhält - 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);