Enrico: Ist meine grundlegende Prüfung einer E-Mail so ok?

Beitrag lesen

Hallo,

ich habe mir eine Plausibilitätsprüfung für eingegebene E-Mails überlegt, die soweit auch funktioniert.

Die Prüfung auf unzulässige Zeichen habe ich weggelassen, weil sich diese ja immer wieder mal ändern oder ergänzt werden können.

Kann ich den nachfolgenden Code besser oder schlanker programmieren?
Habt ihr Verbesserungsvorschläge?

  
var Fehlermeldung = new Array();  
  
function is_email (input)  
{  
   var Feldspezifischer_Fehler = "";  
  
   if (!is_empty (input))  
   {  
      if (typeof input !== "string")  
         input = to_string (input);  
  
      if (input.indexOf("@") == -1)  
         Feldspezifischer_Fehler += 'E-Mail-Adresse|Das "@"-Zeichen fehlt';  
      else  
      {  
         var Einzelteile = input.split("@");  
  
         if (Einzelteile.length != 2)  
            add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", 'Es ist nur ein "@"-Zeichen zulässig');  
         else  
         {  
            var Name    = Einzelteile[0],  
                Domaene = Einzelteile[1];  
  
            if (Name.length < 1)  
               add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", "Der Namensteil ist zu kurz");  
            else  
               if (Name.length > 64)  
                  add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", "Der Namensteil ist zu lang");  
  
            if (Domaene.indexOf(".") == -1)  
               add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", "Der Punkt im Domänenteil fehlt");  
            else  
            {  
               Einzelteile = Domaene.split(".");  
  
               if (Domaene.indexOf(".") <= 0)  
                  add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", "Der Domänenteil darf nicht mit einem Punkt anfangen");  
  
               if (Einzelteile[Einzelteile.length - 1].length < 2)  
                  add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", "Die Länderkennung ist zu kurz");  
            }  
  
            if (Domaene.length < 3)  
               add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", "Der Domänenteil ist zu kurz");  
         }  
  
         if (input.length > 254)  
            add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", "Die E-Mail-Adresse ist zu lang");  
      }  
  
      if (input.indexOf(".") == -1)  
            add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", "Der Punkt vor dem Domänenteil oder der Domänenteil insgesamt fehlt");  
      else  
         if (input.indexOf(".") == 0)  
            add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", "Der Namensteil darf nicht mit einem Punkt beginnen");  
         else  
            if (input.indexOf(".") == input.length)  
               add_error (Feldspezifischer_Fehler, "E-Mail-Adresse", "Der Domänenteil darf nicht mit einem Punkt enden");  
  
      if (Feldspezifischer_Fehler == "")  
         return true;  
  
      Fehlermeldung.push (Feldspezifischer_Fehler);  
  
      return false;  
   }  
}  
  
function is_empty (input)  
{  
   if (typeof input !== "undefined" || input !== null || input || 0 !== input.length)  
   {  
      input = input.replace (/^\s+\p{Cc}|\r|\n|\r\n|\s+\p{Cc}|\r|\n|\r\n$/g, "");  
  
      return (0 === input.length);  
   }  
}  
  
function to_string (input)  
{  
   if (!is_empty (input))  
   {  
      if (input.toString)  
         input = input.toString();  
      else  
         if (typeof input !== "string")  
            input += "";  
  
      return input;  
   }  
}  
  
function add_error (Feldspezifischer_Fehler, Rubrik, Fehler)  
{  
            if (Feldspezifischer_Fehler.indexOf(Rubrik) == -1)  
               return (Rubrik + "|" + Fehler);  
            else  
               return ("~" + Fehler);  
}  

Vielen Dank für eure Mithilfe!

Gruß,
Enrico