Eddie: Hilfe bei regulärem Ausdruck

Hallo allerseits,

ich prüfe bei mir das Format von E-Mail-Adressen auf Gueltigkeit, und zwar mit folgendem Ausdruck:

============
if(!ereg("^([0-9,a-z,A-Z]+)(.,_)*@(.,_,-)*.{2}([0-9,a-z,A-Z])?$",$eMail))
{
   echo "Fehler";
}

Trotzdem ist es einem User gelungen, eine E-Mail-Adresse in folgendem Format reinzuschmuggeln:

xyz,@msn.com

Und zumindest Outlook findet das nicht korrekt.

Also meine Frage:

  • ist das eine korrekte Adresse
  • und wenn nein, koennt Ihr mir sagen, wo der Fehler ist?

Zugebenermassen bin ich nicht so fit mit RegEx, hatte den Ausdruck aus irgendeinem Forum - drum bin ich grad etwas aufgeschmissen :-(

Danke Euch!
Eddie

  1. Hallo.

    if(!ereg("^([0-9,a-z,A-Z]+)(.,_)*@(.,_,-)*.{2}([0-9,a-z,A-Z])?$",$eMail))

    Mit dem Ausdruck ist es möglich Dir noch ganz andere Adressen "reinzuschmuggeln". Dein gegebenes Beispiel für eine geschmuggelte Adresse entspricht Deinen Vorgaben. Das Komma lässt Du in der 2. eckigen Klammer zu und erwartest danach kein Zeichen mehr.
    In Regulären Ausdrücken werden Zeichen ohne Trennzeichen angegeben. Willst Du also alle Ziffern und Buchstaben zulassen, dann müsstest Du [0-9a-zA-Z] schreiben statt [0-9,a-z,A-Z].

    Empfehlenswert zu lesen ist ein Feature-Artikel: http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/email/index.html Dort gibt auch die Lösung für Dein Problem.

    Grüße aus Würzburg
    Julian

    --
    ss:) zu:{ ls:< fo:) de:< va:} ch:° n4:} rl:° br:> js:| ie:{ fl:( mo:)
  2. hi,

    if(!ereg("^([0-9,a-z,A-Z]+)(.,_)*@(.,_,-)*.{2}([0-9,a-z,A-Z])?$",$eMail))

    lass die kommas in [] weg, also z.b. [0-9a-zA-Z] statt [0-9,a-z,A-Z], das sollte schon mal weiterhelfen....

    aber du solltest den ganzen string nochmal überdenken, er beschreibt nicht unbedingt eine gültige email adresse...

    viel spass beim weiterprobieren, ist auf jeden fall sehr lehrreich, weiß das aus erfahrung ;-)

    gruß oggy