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