Hi,
Benutze keine Regex, sondern eine Validierungs-Funktion, die dafür vorgesehen ist.
guter Punkt. Mit diesen Filter-Funktionen habe ich noch keine Erfahrungen. Aber ich fürchte, damit wird man auch einige False Positives bekommen. Ich weiß nicht, nach welchen Kriterien diese Funktionen vorgehen (und es ist mir im Moment zu viel Aufwand, im Quellcode zu wühlen). Existierende Domains könnte man durch eine direkte Anfrage ans DNS herausfinden.
Aber wie sieht es mit RFC Violations bei einzelnen Anbietern aus? Ich entsinne mich, dass ich in den einschlägigen RFCs mal gelesen habe, ein Punkt am Ende des Local Part, also unmittelbar vor dem '@', sei nicht zulässig (keine Ahnung, warum). Aber beispielsweise GMX lässt solche Adressen zu - ein Bekannter von mir hat jahrelang eine Adresse in der Form x.y.@gmx.de verwendet (anstatt x und y seine echten Initialen eingesetzt). Wie geht man mit sowas um? Da hat man eine nicht regelkonforme, aber trotzdem existierende und verwendete Adresse. Eine kritische Prüfung würde sie aber als fehlerhaft abweisen.
Deswegen bin ich trotz aller RegEx-Entwürfe und existierenden Validierungsfunktionen der Meinung, man kann/sollte eine e-Mail-Adresse nur auf die grundlegendsten Merkmale testen. Und das sind IMO die, die Matthias mit seinem Trivial-RegEx abdeckt: Ein paar beliebige Zeichen, dann ein '@', noch ein paar beliebige Zeichen, irgendwo ein Punkt und noch ein paar Zeichen dahinter.
So long,
Martin