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

theDon schrieb am 24.01.2003 um 13:12 Uhr

http://msdn.microsoft.com/library/en-us/script56/html/js56reconRegularExpressions.asp
damit hab ichs gelernt...

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 >>