Sven Rautenberg: Mein RegExp für Email akzeptiert keinen "-"

Beitrag lesen

Moin!

define (EMAIL, "/[1]+(.[_a-z0-9-]+)*@([a-z0-9-]+.)+([a-z0-9-]{2,3})$/i");

Bei meinem RexExp fehlt noch der Bindestrich als erlaubtes Zeichen...

Dein RegEx ist mehr als fehlerhaft.

Probiere doch mal selbst:

mail@host.info
"Toller User"@staats.museum
ungueltige@tld.an-gabe
hier@istwas.falsch.d-e
wo.gibts@denn.sowas.123

Du treibst mächtig Aufwand, um einer Mailadresse anzusehen, ob sie einigermaßen gültig sein könnte - dennoch versagt dein System bei vielen Adressen.

Deshalb mein Tipp: Entweder du realisierst die ganz große Nummer, also syntaktische Prüfung nach irgendeiner RFC. Das Thema wurde hier im Forum schon mal behandelt, und die Definition des korrekten regulären Ausdrucks läuft über mindestens zwei Bildschirmseiten! Oder du läßt den ganzen Schrott und testest banale Minimaleigenschaften, die in jeder Adresse vorkommen, aber niemanden ausschließen:

.+@.+..{2,}

Eine Mailadresse besteht aus mindestens 6 Zeichen, in denen ein @ und danach ein . vorkommen müssen. Die TLD-Angabe muss mindestens zwei Zeichen lang sein. Daraus resultiert (und das ist nicht falsch: Für Useranteil und die Bezeichnung der Second-Level-Domain ist mindestens ein Zeichen anzugeben.

Wie du den RegEx jetzt deinem PHP beibringst, überlasse ich dir.

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)

  1. _a-z0-9 ↩︎