Hallo zusammen,
ich möchte gerne folgende Regular Expression genauer verstehen:
^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9üöä-]+(\.[a-z0-9üöä-]+)*\.([a-z]{2,4})$^
bzw. ich denke ich verstehe sie falsch. Hier mal meine Annahmen:
- String muss mit Kleinbuchstaben, Zahlen, _ + oder - beginnen
- darauf folgt ein . (nicht zwingend)
- dann wieder kleinbuchstaben und Zahlen, _ + oder -
- dann muss zwingend ein @ kommen
- es folgen Kleinbuchstaben, zahlen oder öäü
- ein möglicher punkt und wieder kleinbuchstaben zahlen oder öäü
- ein zweingender punkt und 2-4 kleinbuchstaben
soweit so gut, nun habe ich mir ein kleines PHP-Skript gebastelt um das ganze zu überprüfen:
Bei der Eingabe
- xyz.ddj
wird auch wie erwartet ungültig ausgegeben und bei
- xyz.test@mail.de
wie erwartet gültig
Wenn ich hier folgende Strings durchjage werden diese jedoch als gültig angezeigt und das verstehe ich nicht ganz:
- ea?e.,12345!"$§%&/$()=?sdfjs@wev.de
(hier sind doch viel zu viele Zeichen drin, die die Regex gar nicht durchlassen dürfte, z.B: $ oder ?
- eöe.väv@mail.de
(hier kommen ja vor dem @ Zeichen bereits ö und ä - die sind doch laut regular expression erst in der domain erlaubt?!)
Wäre über eine kurze Aufklärung sehr Dankbar, anscheinend hab ich grad ein Brett vorm Kopf
ich möchte gerne folgende Regular Expression genauer verstehen:
^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9üöä-]+(\.[a-z0-9üöä-]+)*\.([a-z]{2,4})$^
bzw. ich denke ich verstehe sie falsch. Hier mal meine Annahmen:
- String muss mit Kleinbuchstaben, Zahlen, _ + oder - beginnen
- darauf folgt ein . (nicht zwingend)
- dann wieder kleinbuchstaben und Zahlen, _ + oder -
- dann muss zwingend ein @ kommen
- es folgen Kleinbuchstaben, zahlen oder öäü
- ein möglicher punkt und wieder kleinbuchstaben zahlen oder öäü
- ein zweingender punkt und 2-4 kleinbuchstaben
soweit so gut, nun habe ich mir ein kleines PHP-Skript gebastelt um das ganze zu überprüfen:
PHP-Code:
function validemail($email)
{
$email_reg = "^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9üöä-]+(\.[a-z0-9üöä-]+)*\.([a-z]{2,4})$^";
if (preg_match($email_reg, strtolower($email))){
echo('gültig: ');
echo($email);
echo('<br />');
}
else{
echo('ungültig: ');
echo($email);
echo('<br />');
}
}
$email = $_POST['mail'];
validemail($email);
Bei der Eingabe
- xyz.ddj
wird auch wie erwartet ungültig ausgegeben und bei
- xyz.test@mail.de
wie erwartet gültig
Wenn ich hier folgende Strings durchjage werden diese jedoch als gültig angezeigt und das verstehe ich nicht ganz:
- ea?e.,12345!"$§%&/$()=?sdfjs@wev.de
(hier sind doch viel zu viele Zeichen drin, die die Regex gar nicht durchlassen dürfte, z.B: $ oder ?
- eöe.väv@mail.de
(hier kommen ja vor dem @ Zeichen bereits ö und ä - die sind doch laut regular expression erst in der domain erlaubt?!)
Wäre über eine kurze Aufklärung sehr Dankbar, anscheinend hab ich grad ein Brett vorm Kopf

Kommentar