Hi,
Meine RegExp:
'/^(\S+?)(.?)@(\S+?)(.?).(\S+?)(.*?)(\S+?)$/'
die solltest Du besser nochmal hinterfragen...
> Dahinter ist jedes beliebige Zeichen ausser Newline beliebig oft oder gar nicht erlaubt.
Warum willst Du Whitespace zulassen?
> Danach wird ein @ gewünscht.
es könnten auch aus Versehen mehrere eingegeben sein...
> Danach ist wieder jedes Zeichen ausser Newline beliebig oft oder gar nicht erlaubt.
s.o.
> Anschließend ist wieder jedes Zeichen ausser Whitespace, gefolgt von beliebig vielen oder keinem beliebigen Zeichen ausser Newline und einem oder mehreren abschließenden beliebigen Zeichen ausser Whitespace erlaubt.
hier lässt Du dann sinnvoller Weise keine Whitespaces mehr zu...
> Richtig gemerkt, die TLD muss aus mindestens 2 Zeichen bestehen wobei das erste und das letzte Zeichen kein Whitepace darstellen dürfen.
kennst Du TDLs mit Whitespaces?
[Ich prüfe E-Mails so](http://1ngo.de/web/email-check.html).
`'^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$'`{:.language-php}
ist ebenfalls nur rudimentär und nur darauf ausgerichtet:
- mögliche Vertipper oder fehlende Eingaben zu erkennen und
- Manipulationen bei Nutzung der mail()-Funktion zu verhindern.
Ich habe bewußt gequoteten Freitext nicht zugelassen, da ja i.d.R. nur die reine Mailadresse abgefragt wird. Und die Prüfung auf IPs habe ich auch stark vereinfacht, weil mir die Erkennung grober Eingabefehler schon ausreicht.
Worauf ich nicht sofort kam, war die Möglichkeit der Negierung, über die bestimmte kritische Zeichen nicht zugelassen werden, anstatt - wie üblich - die zugelassenen Zeichen anzugeben; also Blacklist anstatt Whitelist, die im Zuge der Internationalisierung ja kaum noch bei vertretbarem Aufwand zu nutzen ist.
freundliche Grüße
Ingo
--
[[barrierefreie Ingo Webdesign](http://www.1ngo.de/web/) » [Suchmaschinenoptimierung](http://www.1ngo.de/web/seo.html) | [em?](http://www.1ngo.de/web/em.html) | [IE7 - Bugs](http://www.1ngo.de/web/ie7.html)]