[latex]Mae govannen![/latex]
Mein Ansatz für die Validierung von Mailadressen war bislang immer:
preg_match("/^.+@.+\..+$/", $mail)
- das ist simpel genug, dass man es nicht kaputtkriegen kann. Mindestens ein Zeichen vor dem @, mindestens ein Punkt hinter dem @, getrennt durch Zeichen.Das ist imho zu wenig, da sie Syntaxfehler nicht ausschließt, die gerne mal eingebaut werden - z.B. Leute die mehrere Mail-Adressen aneinanderhängen (kommt hier oft genug vor).
Ich prüfe nur noch folgendes:
- enthält *genau ein* Zeichen „@“ mit einem Zeichen davor und einem, das kein Punkt ist, dahinter
- enthält kein Komma
Dadurch lasse ich zwar viele illegale Kombinationen durch, das ist mir aber i.d.R. lieber als eine gültige Adresse zu blockieren. Die Prüfung kann ich mit einfachen String-Methoden erreichen, ohne RegEx.
PHP bietet allerdings auch noch eine Alternative: filter_var().
Dabei muß man sich dann wieder darauf verlassen, daß beim Programmieren bzw. erstellen der RegEx kein Fehler gemacht wurde, der eigentlich gültige Adressen ausschließt, weil sowas…
/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD
wartungstechnisch reichlich undurchschaubar ist.
Stur lächeln und winken, Männer!
Kai
„Die Borg würden nicht mal Spaß verstehen, wenn sie einen Vergnügungspark assimiliert hätten!” (B'Elanna Torres)
SelfHTML-Forum-Stylesheet