ThWboard Support-Forum (Archiv)
Ort: / Boardübersicht / Archiv / [fixed (?)] Erlaubte Zeichen in email ungenuegend
Seite 1 von 2 – nächste Seite >>
Jonas schrieb am 23.01.2003 um 14:16 Uhr
ne pm von einem meiner user
hallöchen
ich weiß nicht ob das jetzt am board liegt oder an mir, auf jeden fall wollte ich meine e-mailadresse ändern aber er sagt mir das die email folgender form unzulässig ist...
der_Gauner@xxx.xxx
naja halt das das keine typische form ist, aber sie existiert...
evtl sollten interpunktionen usw ebenfalls erlaubt werden, schliesslich sind sie gueltig ;)
Bluetooth schrieb am 23.01.2003 um 16:04 Uhr
och neee, noch nen regexp zu ändern ... Jonas lies dir mal selbst die Dokumentation durch :D
Jonas schrieb am 23.01.2003 um 16:37 Uhr
gib mir eine, werd net schlau draus aus der php.net offiziellen :\
Bluetooth schrieb am 23.01.2003 um 16:47 Uhr
ist doch ganz einfach ;) bestimmte Zeichen musste escapen im regex ansonsten kannst die in [] angeben .. sub-selects auf die zurückreferenziert werden kann, werden mit () umschlossen...
MrNase schrieb am 23.01.2003 um 17:45 Uhr
aha! :) hm also ich hab es nicht verstanden.... :rolleyes:
Jonas schrieb am 23.01.2003 um 18:35 Uhr
bt, gib mir nen link mit ner uebersicht, muss ja netmal nen tut sein...
Bluetooth schrieb am 23.01.2003 um 20:14 Uhr
habsch doch schon ... php.net :D
da suchste nach preg_replace und klickst links auf PREG Syntax oder so ähnlich
KhanRKerensky schrieb am 23.01.2003 um 22:24 Uhr
Pattern Syntax
Jonas schrieb am 24.01.2003 um 12:27 Uhr
jaja, okok habs jetzt auch mitbekommen *schaem*
werds versuchen selber hinzukriegen
Jonas schrieb am 24.01.2003 um 13:54 Uhr
ok, damit waeren es dann msdn, php und perl die ich zur verfuegeung haette, hilft mir auch schon um einiges weiter.
allerdings hake ich momentan an dem email code, weil ich es mir nicht erklaeren kann, warum einges doppelt aufgefuehrt ist...
function check_email($email)
{
return eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email);
}
verbessert mich bitte, falls ich was falsch interpretiere:
^ - Es wird vom Anfang des Strings ausgegangen
[_a-z0-9-] - alle zeichen von a bis z, sowie 0 bis neun,sowie bindestrich und unterstrich sind erlaubt (wieso funzt der unterstrich dann nicht?!)
+ - ???
(\.[_a-z0-9-]+) - das gleiche wie oben nur im subpattern inklusive nem escapten punkt zu dem ich nix gefunden habe :D, sowie nem zusaetzlichen plus, was mit ner wiederholung zusammenhaengen koennte...
* - jedes beliebige zeichen
erm ja, sorry fuer mein generve, aber irgendwann kapier ichs hoffentlich...
Bluetooth schrieb am 24.01.2003 um 14:51 Uhr
also: der String muss mit einem Zeichen aus
[_a-z-0-9-] anfangen
dann kommt der eigentliche Teil
und zwar der Teil vor dem @, dann nach dem @ und dann nen . und nen top-level
sähe in etwa so aus:
beginnt der String mit einem der angegeben Zeichen?
ist der Teil vor dem @ gültig?
ist der Teil nach dem @ gültig, wobei gültig heißt, daß er aus den angegebenen Zeichen bestehen muss und am Ende einen Punkt+ top-level (also 2-4 Zeichen alpha) haben muss
Jonas schrieb am 24.01.2003 um 17:04 Uhr
ja ok, soweit komm ich dann klar, aber wieso wird ein underscore nicht als korrekt erkannt?
Bluetooth schrieb am 24.01.2003 um 17:49 Uhr
öhm ... schau mal, was ein _ am anfang einer char-klasse bewirkt ...
_ negate the class, but only if the first character
also heißt das nicht, daß _ akzeptiert wird...
Jonas schrieb am 24.01.2003 um 18:33 Uhr
argh, die stelle muss ich ueberlesen haben...
also wo muessen hier nun punkt und underscore rein, damit sie als gueltige zeichen gelten?
(\.[_a-z0-9-]+)
theDon schrieb am 24.01.2003 um 20:57 Uhr
(\.[\_\.a-z0-9-]+)
Bluetooth schrieb am 24.01.2003 um 21:32 Uhr
öh wohl eher:
(\.[_a-z0-9_-\.]+)
irgendwas in der Richtung ...
KhanRKerensky schrieb am 24.01.2003 um 23:54 Uhr
Warum den Punkt nochmal einbinden?
Der ist doch schon vor der eckigen Klammer drin. Mit dem Code könnte ja ein Punkt vorm @ sein. Und das darf doch eigentlich nicht, oda?
Narodnaja schrieb am 25.01.2003 um 00:03 Uhr
sicher: vorname.nachname@provider.de ist natürlich erlaubt.
KhanRKerensky schrieb am 25.01.2003 um 00:24 Uhr
Ich meine direkt vor dem @ (ichso.@home.hier).
Bluetooth schrieb am 25.01.2003 um 01:42 Uhr
es kann eine mail-adresse in der form a.b.c.d.e.f@g.h.i.j.k.l.mn geben ... und da gibts eindeutig Punkte vor dem @, die sind dann eingeschlossen und das regex ist anscheinend so gelöst, daß es die teile sauber auffasst (ich gruppiers mal mit Klammern und formatier die gültigen bereiche grün)
(a)(.b)(.c)(.d)(.e)(.f)(.)@(g)(.h)(.j)(.k)(.l)(.)(mn)
KhanRKerensky schrieb am 25.01.2003 um 18:39 Uhr
Ja eben. Warum dann noch in den eckigen Klammern den Punkt mit reinnehmen. Dann wär ja theoretisch auch ein a..b...c.@d..e.fg möglisch. Und das erscheint mir unsinnig.
Bluetooth schrieb am 25.01.2003 um 19:50 Uhr
probier aus, obs nen true zurückgibt
Superhausi schrieb am 01.04.2003 um 00:02 Uhr
return eregi( "^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,6}$", $email );
<-- Würde das hier vorschlagen...
[Edit]
Falls bis morgen abend niemand was dagegen hat, bau ich's ein (konnte bei meinen Tests keine EMail Adresse finden, die nicht geht und umgekehrt)...
[/Edit]
[Edit2]
Die maximal 6 Zeichen lange TopLevel Domain ist wegen .museum und .person (auch wenn die schrott sind)...
[/Edit2]
Tendor schrieb am 01.04.2003 um 22:27 Uhr
grmpf...grundsätzlich:
es gibt in php perl-kompatible regexes und posix-kompatible regexes
(die einen beginnen mit preg, die anderen mit ereg)
das wird hier wohl etwas durcheinander gewürfelt....
return eregi( "^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,6}$", $email );
<-- Würde das hier vorschlagen...
Falls bis morgen abend niemand was dagegen hat, ...
ich hab was dagegen :)
mein vorschlag:
^[a-z0-9]+([_.-][a-z0-9]+)*@[a-z0-9]+([.-][a-z0-9]+)*.[a-z]{2,6}$
ohne gewähr *8)
Seite 1 von 2 – nächste Seite >>