phpbar.de logo

Mailinglisten-Archive

[php] email regex

[php] email regex

Alexander Skwar php_(at)_phpcenter.de
Sun, 9 Sep 2001 18:40:04 +0200


So sprach =BBswEk=AB am 2001-09-08 um 13:08:29 +0200 :
> hallo liste
>=20
> ich gehe mit folgender regex =FCber die email adresse
> eines users:
>=20
> '^([a-zA-Z0-9_\.\-]+)\_(at)_([a-zA-Z0-9_\.\-]+)\.([a-zA-Z]{2,5})*$'

Ist das so richtig?  Damit erlaubst Du doch auch, das Domainnamen mit -
oder . oder _ anfangen.  Und Usernamen d=FCrfen bei Dir auch mit -._
anfangen (oder auch nur daraus bestehen).

Ich bin n=E4mlich auch gerade dabei mir einen Regul=E4ren Ausdruck zu
machen, der Email Adressen pr=FCft.  Hierbei habe ich bei einigen Adressen
Probleme, da ich nicht wei=DF, ob die Adresse technisch g=FCltig ist.

Vlt. k=F6nnte einer von Euch mir helfen :)  Ich schreibe dabei, ob ich
annehme, das die Adresse korrekt ist (oder auch nicht).

Bei folgenden Adressen bin ich mir unklar:

user._(at)_domain		-> Punkt am Ende des Local-Parts	(annahme: Falsch)
user..name_(at)_domain	-> mehrere Punkte in LP			(Okay)
=2Euser_(at)_domain		-> Punkt am Anfang des LP		(Falsch)
user-_(at)_domain		-> Strich am Ende des LP		(Falsch)
user__(at)_domain		-> Unterstrich am Ende des LP		(Falsch)
user--name_(at)_domain	-> mehrere Striche in LP		(Okay)
user__name_(at)_domain	-> Mehrere Unterstriche in LP		(Okay)
user_(at)_domain--name.tld	-> Mehrere Striche in Domain		(Okay)
0_(at)_domain		-> Ziffer als einziges Zeichen in LP	(Okay)
-user_(at)_domain		-> Strich als erstes Zeichen in LP	(Falsch)

Wenn ich das RFC richtig verstanden habe, so d=FCrfen als erlaubte Zeichen
beim Usernamen [-a-z0-9_] vorkommen (mit Ausnahmen wie oben).  Korrekt?

Und im Domainnamen d=FCrfen auch nur [-a-z0-9] vorkommen, korrekt?

Um es mal in Worte zu fassen. =20

Der Local-Part (also der Username) darf aus Buchstaben und Ziffern
bestehen.  Zwischen den Buchstaben oder Ziffern d=FCrfen ein oder mehrere
Bindestriche (-), Unterstriche (_) und Punkte vorkommen.  Das erste und
letzte Zeichen mu=DF ein Buchstabe oder eine Ziffer sein.  Ist das so
richtig?

Beim Domainnamen d=FCrfen nur Ziffern, Buchstaben und Bindestriche
vorkommen.  Dazu kommen noch Punkte (.) um Subdomains zu trennen.  Das
erste Zeichen des Domainnamens mu=DF ein Buchstabe oder eine Ziffer sein.
Sofern nur Domainnamen (also keine IPs) betrachtet werden, mu=DF das
letzte Zeichen ein Buchstabe oder ein Punkt sein.  Die Top-Level-Domain
mu=DF (zur Zeit noch) aus 2 bis 3 Buchstaben bestehen.  "Sub"Domains (also
alles was vor "." TLD kommt) d=FCrfen aus bel.
Buchstaben/Ziffern/Bindestrich Kombinationen bestehen.  Das erste und
letzte Zeichen mu=DF wiederum ein Buchstabe oder eine Ziffer sein.  Ist
das richtig?

Zur Zeit habe ich diesen Ausdruck:

F=FCr den Local-Part (Usernamen):

(^[0-9a-z_](?:[-_.]{0,1}[0-9a-z]){0,})

F=FCr den Domainnamen:

((?:[a-z0-9]{1,}(?:[-]{0,1}[a-z0-9]{0,}?){0,}?\.){0,}[a-z]{2,3}\.{0,1}$)

->

=F7(^[0-9a-z_](?:[-_.]{0,1}[0-9a-z]){0,})_(at)_((?:[a-z0-9]{1,}(?:[-]{0,1}[a-z0-=
9]{0,}?){0,}?\.){0,}[a-z]{2,3}\.{0,1}$)=F7i

Nur: Der matched halt bei einigen Adressen nicht, von denen ich annehme,
das sie korrekt sind.  Zum einen passt der nicht, wenn der Local-Part
mehrere [_-.] direkt aufeinanderfolgend hat; und zum anderen Matched
der, wenn der Domainname mehrere - direkt nacheinander hat.

Danke sehr,

Alexander Skwar
--=20
How to quote:	http://learn.to/quote (german) http://quote.6x.to (english)
Homepage:	http://www.digitalprojects.com   |   http://www.iso-top.de
   iso-top.de - Die g=FCnstige Art an Linux Distributionen zu kommen
		Uptime: 1 day 19 hours 39 minutes


php::bar PHP Wiki   -   Listenarchive