Email Check mit regulaerem Ausdruck

Leider bin ich mit regulaeren Ausdruecken noch nicht so bewandert und habe deshalb aus dem Internet folgenden reglaeren Ausdruck zur Pruefung einer korrekten Email benutzt:

$wertneu = eregi("^[a-z0-9]+([-_.]?[a-z0-9])+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $wert1);

Der funktioniert jedoch scheinbar nicht richtig, denn

[email protected]

ist ja eine korrekte Email Adresse. Sie wird aber nicht akzeptiert. Erst ab zwei Zeichen vor dem @ wird die Email als korrekt angesehen.

Was ist an derm regulaeren Ausdruck falsch und wie ist er korrekt?

Danke fuer Eure Hilfe.

Chris

Hallo!

$wertneu =
eregi("^[a-z0-9]+([-_.]?[a-z0-9])+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}",
$wert1);
Was ist an derm regulaeren Ausdruck falsch und wie ist er
korrekt?

Ein Schnellschuss: Das zweite ‚+‘ mal durch ein ‚*‘ ersetzen.

Gruß, Jan

Danke Jan,

ja das funktioniert. Ich hoffe nur, dass damit dann kein anderes Problem auftritt.

Super, Chris

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Solange du bei recht gebräuchlichen Domains bleibt passt das. Aber nur bis 4 Zeichen für die Domainendung. Also .de, .rus, .info. Wärend du .museum z.B. nicht als valide einstufst. Dafür müsstest du hinten noch die {2,4} in {2,6} umändern.

Gruß Lamer

Ich glaub, ein Emailcheck ist eine Wissenschaft für sich selbst!

http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
http://www.regular-expressions.info/email.html

Hi,

Ich glaub, ein Emailcheck ist eine Wissenschaft für sich
selbst!

Genau, das tut sich doch keiner freiwillig an. Ich checke die Syntax von E-Mail-Adressen mit

preg\_match('/^.+@.+\..+$/',...)

evtl. wird die konvertiert nach Puny-Code bei Umlautdomains. Von solchen Checks geht sowieso keine Sicherheit aus, deshalb simple and stupid, um wenigstens keinen korrekte Adresse auszuschließen.

Ciao
Rudy