Moin!
Man kann eine Mail adresse komplitiziert prüfen aber folgendes sollte eigentlich reichen: preg_match("/\w*@\w*.[a-zA-Z]{2,3}/i",$string);
Nein, deine Prüfung ist aus vielen vielen Gründen falsch.
Erstens: \w* match auch auf null Zeichen, damit wäre "@example.com" als Mailadresse gültig. Oder auch "user@.tld".
Zweitens: Wer sagt dir, dass Top-Level-Domains nur zwei oder drei Zeichen haben? Schon mal 'ne Mail an .info-Domains geschickt? An .aero? An .museum?
Soweit die ganz groben Schnitzer. Also bitte schnell auf den Müll damit.
preg_match("/.+@.+..+/",$string) sollte wesentlich besser sein.
- Sven Rautenberg