Kai345: Email überprüfen mit preg_match

Beitrag lesen

[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