Mein RegExp für Email akzeptiert keinen "-"
Johannes Bauer
- php
Hi,
define (EMAIL, "/[1]+(.[_a-z0-9-]+)*@([a-z0-9-]+.)+([a-z0-9-]{2,3})$/i");
Bei meinem RexExp fehlt noch der Bindestrich als erlaubtes Zeichen...
ungetestet: nö. Dafür verweigerst Du jedem, der z.B. eine *.arpa oder *.info-Adresse hat, die Mailadresse.
Wo bringe ich den ein?
Ich sehe die Bindestriche exakt dort, wo sie sein sollen. Nur bin ich nicht ganz sicher, ob die "." innerhalb von Doublequotes durch PHP nicht zu einem simplen "." zusammengezogen werden - wahrscheinlich musst Du jene Backslashes verdoppeln.
Cheatah
_a-z0-9 ↩︎
Mmmh,
das habe ich nicht ganz gerafft...
Könntest du nicht den ganzen Ausdruck posten, bitte?
MfG Johann
Hi,
das habe ich nicht ganz gerafft...
ich _vermute_ (testen musst Du es), dass die "" durch "\" ersetzt werden müssen. Das hat mit Deinem ursprünglichen Problem aber nichts zu tun; ich kann anhand des Codes nicht nachvollziehen, warum Bindestriche nicht korrekt erkannt werden sollten.
Könntest du nicht den ganzen Ausdruck posten, bitte?
Nein, selbst ist der Forenteilnehmer.
Cheatah
Guten Abend Cheatah,
define (EMAIL, "/[1]+(.[_a-z0-9-]+)*@([a-z0-9-]+.)+([a-z0-9-]{2,3})$/i");
Bei meinem RexExp fehlt noch der Bindestrich als erlaubtes Zeichen...
ungetestet: nö. Dafür verweigerst Du jedem, der z.B. eine *.arpa oder *.info-Adresse hat, die Mailadresse.
Von .name, .aero, .coop oder sogar sechstellig .museum ganz
zu schweigen. Gibt's eigentlich auch fünfstellige TLDs?
Bye,
Peter
_a-z0-9 ↩︎
Hi,
Dafür verweigerst Du jedem, der z.B. eine *.arpa oder *.info-Adresse hat, die Mailadresse.
Von .name, .aero, .coop oder sogar sechstellig .museum ganz
zu schweigen.
oder .invalid - was "hartkodiert" im RFC als gültig deklariert ist ;-)
Gibt's eigentlich auch fünfstellige TLDs?
Fällt mir jetzt keine ein; aber TLDs sind per se auf keine Länge festgesetzt. Es kann gut (naja...) sein, dass demnächst eine .x-TLD für Weihnachtsseiten abgesegnet wird; und nach oben hin ist die Länge eh nur technisch auf 127 Zeichen begrenzt.
Meines Erachtens spricht nebenbei bemerkt auch nichts dagegen, wenn eine TLD Ziffern und Bindestriche enthält...
Cheatah
Guten Mittag Cheatah,
Meines Erachtens spricht nebenbei bemerkt auch nichts dagegen, wenn eine TLD Ziffern und Bindestriche enthält...
Und wann sollte das denn deiner Meinung nach sinnvoll sein? Mir fällt da
jetzt auf Anhieb kein Beispiel für ein ...
Bye,
Peter, der sich gerade über den Augenarzt aufregt, es hat sich ja seit 1998
doch nichts geändert ;-)
Hi,
Meines Erachtens spricht nebenbei bemerkt auch nichts dagegen, wenn eine TLD Ziffern und Bindestriche enthält...
Und wann sollte das denn deiner Meinung nach sinnvoll sein?
ich habe nie behauptet, es müsse sinnvoll sein :-) aber es ist nicht unwahrscheinlich, dass sich unsere Vorstellung einer TLD verschiebt - bereits jetzt werden sie (Beispiel .museum) recht lang, und es ist durchaus denkbar, dass wir in einigen Jahren eine zusammenhängende TLD mit Bindestrich haben. Letzten Endes hat eine TLD nicht mehr semantische oder technische Bedeutung als ein Domainname: Es ist ein Name.
Davon abgesehen gibt es auch IP-Adressen, in denen dort, wo man die TLD vermutet, Ziffern stehen ;-)
Cheatah
Hallo Cheatah,
wie heißt Du eigentlich? Spreche Leute normalerweise mit ihrem
Namen an ...
Oder warst Du ein bisschen kreativ und hast Dir das als Künstler-
namen eintragen lassen? ;-)
ich habe nie behauptet, es müsse sinnvoll sein :-) aber es ist nicht unwahrscheinlich, dass sich unsere Vorstellung einer TLD verschiebt - bereits jetzt werden sie (Beispiel .museum) recht lang, und es ist durchaus denkbar, dass wir in einigen Jahren eine zusammenhängende TLD mit Bindestrich haben. Letzten Endes hat eine TLD nicht mehr semantische oder technische Bedeutung als ein Domainname: Es ist ein Name.
Hmm ... ich halte solche "entfremdeten" TLDs eben nicht für
sinnvoll, da durch eine TLD meiner Meinung nach eine grobe Ein-
teilung stattfindet. Sollten irgendwann TLDs für Firmen oder gar
Privatleute registrierbar sein, so wird in Bälde das allgemeine
Namensknappheitsproblem zu erwarten sein, was wohl auch nicht nur
in einer entspannenden Gesprächsrunde enden wird, wenn man be-
rücksichtigt, dass dann nicht nur Inländer wie beim "nationalen"
Namenskonflikt mitmischen, sondern auch der Rest der Welt.
Davon abgesehen gibt es auch IP-Adressen, in denen dort, wo man die TLD vermutet, Ziffern stehen ;-)
Mmh.... seit wann zählen IPs als Domains?
Bye,
Peter
Hi,
ich würde es ja gerne richtig stellen, leider weiß ich das problem mit dem Strich nicht zu lösen...
Hallo,
define (EMAIL, "/[1]+(.[_a-z0-9-]+)*@([a-z0-9-]+.)+([a-z0-9-]{2,3})$/i");
ich glaube der bug liegt darin, dass der bindestrich beim user erst nach einem Punkt erlaubt ist.
Muss also heissen (wenn die Mail nicht mit Bindestrich beginnen darf):
"/[2][_a-z0-9-]+(.[_a-z0-9-]+)*@([a-z0-9-]+.)+([a-z0-9-]{2,3})$/i"
LG,
gerhardii
Moin!
define (EMAIL, "/[1]+(.[_a-z0-9-]+)*@([a-z0-9-]+.)+([a-z0-9-]{2,3})$/i");
Bei meinem RexExp fehlt noch der Bindestrich als erlaubtes Zeichen...
Dein RegEx ist mehr als fehlerhaft.
Probiere doch mal selbst:
mail@host.info
"Toller User"@staats.museum
ungueltige@tld.an-gabe
hier@istwas.falsch.d-e
wo.gibts@denn.sowas.123
Du treibst mächtig Aufwand, um einer Mailadresse anzusehen, ob sie einigermaßen gültig sein könnte - dennoch versagt dein System bei vielen Adressen.
Deshalb mein Tipp: Entweder du realisierst die ganz große Nummer, also syntaktische Prüfung nach irgendeiner RFC. Das Thema wurde hier im Forum schon mal behandelt, und die Definition des korrekten regulären Ausdrucks läuft über mindestens zwei Bildschirmseiten! Oder du läßt den ganzen Schrott und testest banale Minimaleigenschaften, die in jeder Adresse vorkommen, aber niemanden ausschließen:
.+@.+..{2,}
Eine Mailadresse besteht aus mindestens 6 Zeichen, in denen ein @ und danach ein . vorkommen müssen. Die TLD-Angabe muss mindestens zwei Zeichen lang sein. Daraus resultiert (und das ist nicht falsch: Für Useranteil und die Bezeichnung der Second-Level-Domain ist mindestens ein Zeichen anzugeben.
Wie du den RegEx jetzt deinem PHP beibringst, überlasse ich dir.
- Sven Rautenberg
_a-z0-9 ↩︎
Hallo Sven,
Deshalb mein Tipp: Entweder du realisierst die ganz große Nummer, also syntaktische Prüfung nach irgendeiner RFC.
er koennte ja auch faul sein: http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/email/index.html
Gruss
Thomas
Moin!
Deshalb mein Tipp: Entweder du realisierst die ganz große Nummer, also syntaktische Prüfung nach irgendeiner RFC.
er koennte ja auch faul sein: http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/email/index.html
Auch bei dieser Implementation funktioniert die gültige TLD ".museum" nicht. Christian wird nur derzeit anderes im Kopf haben, als das zu korrigieren.
Das Thema ist aber eigentlich schon bis zum Erbrechen durchgekaut im Archiv auffindbar - alle Vorteile (es gibt kaum welche) und Nachteile (erheblich, wenn's nicht 101% funktioniert) sind gelistet. Für mich persönlich bleibt die Konsequenz: Eine Mailadresse kann man nur auf Gültigkeit prüfen, indem man eine Mail hinschickt und sich den Empfang bestätigen lässt. Jeder Versuch, da uninformiert mit irgendwelchen Mechanismen einzugreifen, erhöht nur die Fehlerquote durch falsche Aussperrungen.
- Sven Rautenberg
Hi!
Entweder Du schreibst einen ganz einfachen/sehr groben Parser, oder Du verwendest sowas wie http://pear.php.net/manual/en/core.mail.rfc822.php.
Grüße
Andreas