Die Zeile muss also richtig lauten:
Code: Alles auswählen
return preg_match("/^[0-9a-z]([-_.]*[0-9a-z]*)*@[a-z0-9-]+\.([a-z])/i", $email);
Code: Alles auswählen
return preg_match("/^[0-9a-z]([-_.]*[0-9a-z]*)*@[a-z0-9-]+\.([a-z])/i", $email);
Code: Alles auswählen
/^[\w\d+-]+@[\w\d-]+\.[A-Z]{2,4}$/i
Falls vor dem @ noch etwas steht, wird es auch akzeptiert - habe mich dabei nicht nur auf den Augenschein verlassen, sondern es ausprobiert - du auch?delinquent hat geschrieben:Z.B. wird @irgendwas.co.uk weder in Variante 1 noch in Variante 2 akzeptiert.
Code: Alles auswählen
$lp_char = '-A-Za-z0-9!#$%&\'*+\\/=?^_`{|}~';
$lp_rexp = '(['.$lp_char.']|['.$lp_char.']['.$lp_char.'.]*['.$lp_char.'])';
$dp_char = 'A-Za-z';
$dp_rexp = '((['.$dp_char.']|['.$dp_char.']['.$dp_char.'0-9-]{0,61}['.$dp_char.'0-9])\\.)+['.$dp_char.']{2,}';
preg_match('/^'.$lp_rexp.'@'.$dp_rexp.'$/',$email);
Code: Alles auswählen
/^(([a-z0-9äöüß]([\-_\.]*[a-z0-9äöüß])*)+@(([a-z0-9äöüß]([\-_\.]*[a-z0-9äöüß])*)+\.)+[a-z]{2,9})*$/i
Meines Wissens dürfen im local-part keine Sonderzeichen vorkommen - falls doch, würde ich mich über eine Quellenangabe freuen (meine Quelle: RFC 2822).Brazo Alkher hat geschrieben:versucht es mal mit dem regexCode: Alles auswählen
/^(([a-z0-9äöüß]([\-_\.]*[a-z0-9äöüß])*)+@(([a-z0-9äöüß]([\-_\.]*[a-z0-9äöüß])*)+\.)+[a-z]{2,9})*$/i
%@dot.com ist ne gültige Adresse?! Da ist die Variante von Brazo meines Erachtens nach eleganter, wobei ich mir nicht sicher bin, ob nicht auch das letzte Zeichen vor dem @ eines der [.-_] sein darf. Wie auch immer, um die RFCs zu wälzen ists mir heute zu spät...calvini hat geschrieben:Das hiersollte es ungefähr treffen.Code: Alles auswählen
$lp_char = '-A-Za-z0-9!#$%&\'*+\\/=?^_`{|}~'; $lp_rexp = '(['.$lp_char.']|['.$lp_char.']['.$lp_char.'.]*['.$lp_char.'])'; $dp_char = 'A-Za-z'; $dp_rexp = '((['.$dp_char.']|['.$dp_char.']['.$dp_char.'0-9-]{0,61}['.$dp_char.'0-9])\\.)+['.$dp_char.']{2,}'; preg_match('/^'.$lp_rexp.'@'.$dp_rexp.'$/',$email);
[ironic-mode]delinquent hat geschrieben:Da ist die Variante von Brazo meines Erachtens nach eleganter
Code: Alles auswählen
$lp_rexp = '(['.$lp_char.']|['.$lp_char.']['.$lp_char.'.]*['.$lp_char.'])';
Code: Alles auswählen
$lp_rexp = '['.$lp_char.'](\\.*['.$lp_char.'])*';
Code: Alles auswählen
$lp_char = '-A-Za-z0-9!#$%&\'*+\\/=?^_`{|}~';
$lp_rexp = '['.$lp_char.'](\\.*['.$lp_char.'])*';
$dp_char = 'A-Za-z';
$dp_rexp = '((['.$dp_char.']|['.$dp_char.']['.$dp_char.'0-9-]{0,61}['.$dp_char.'0-9])\\.)+['.$dp_char.']{2,}';
preg_match('/^'.$lp_rexp.'@'.$dp_rexp.'$/',$email);
also meines Wissenstandes sind E-Mail Adressen wiecalvini hat geschrieben:@Brazo: Habe mich von dir nicht kritisiert gefühlt. Mich ärgert lediglich das undifferenzierte Herunterputzen anderer. Woher hast du die Basis für deine RegExp? Sonderzeichen im local-part sind nach meinem Kenntnisstand nicht erlaubt, gleiches gilt z. B. für den Unterstrich im domain-part. Hast du eine Quelle?