Hi!
preg_match("/^((\"[^\"\f\n\r\t\b]+\")|([A-Za-z0-9_][A-Za-z0-9_\!\#\$\%\&\'\\+\-\~\/\^\\\|\\{\\}]*(\\.[A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\
\|\{\}])))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\-])([A-Za-z0-9]))?(\.(?=[A-Za-z0-9\-]))?)+[A-Za-z]+))$/D",
$e_mail_adresse);
> Das sieht aber sehr teuer aus!
> Das würde ich garantiert nur benutzen, wenn es sich nicht vermeiden lässt.
Am wenigsten lassen sich Kommentare von anderen Programmierern vermeiden, dass nach Vorschift 08/15 ein gültiger Wert auch so und so aussehen kann. Damit haben sie zwar prinzipiell Recht, aber so ein Spezialfall wird in der Praxis nur sehr selten auftreten. Soweit ich weiß, passt dieser Ausdruck auf alle formal korrekten Mail-Adressen[\*]. Und damit er das tut ist er eben so umfangreich, teuer und wenig praxisnah.
Das soll jetzt kein Plädoyer für laxe Prüfungen im Allgemeinen sein. Sicherheit geht immer vor! Wenn aber weniger Mailadressen erlaubt als theoretisch zulässig sind, tut das der Sicherheit keinen Abbruch.
[\*] Ich hatte, glaube ich, irgendwann mal eine lesbar formatierte und kommentierte Version gesehen, hab aber mangels Interesse nicht geprüft, ob das soweit passte. An Gegenstimmen kann ich mich aber auch nicht erinnern.
Lo!