Dennis: ärger mit regulärem ausdruck

Beitrag lesen

Hi Tobias,

Ferner setzt du durch vorraus, dass der Teil vor dem @ mindestens 3 Zeichen lang sein muss - ist dem denn wirklich so?
nein, ich habe auch eine E-Mailadresse die mit »to@« anfängt.

Das war mehr eine rethorische Frage, aba trotzdem danke, dass du mir das noch mal bestätigst ;-)

In einer Zeichenklasse, also zwischen [ und ] hat ein . immer seine normale Bedeutung und gilt nicht "als Platzhalter für ein beliebiges Zeichen (außer Whitespace)", für was er sonst gilt.
der Punkt erkennt lediglich keine Zeilenumbrüche (außer man verwendet den Modifikator »s«)

ah, stimmt, das hatte ich vergessen. Klar, Es werden nur Zeilenumbrüchen und ich glaube auch Wagenrückläufe (oder wie hieß das?, dieses \r unter Windows) nicht erkannt.

Dann ist deine Logik da auch falsch. Da blickt doch keiner mehr durch, mach das lieber so:
([.]|-|_)?
»[._-]?« sollte es auch tun (ggf. noch runde Klammern um die eckigen um das gefundene Zeichen "festzuhalten")

Stimmt, so gehts natürlich noch einfacher.

Sollte eigentlich genau das gleiche bewirken: Entweder ein -, oder ein _, oder ein beliebiges Zeichen, oder gar nichts.
mhh... ein paar Zeilen weiter oben behauptest du noch, dass ein »[.]« nur einen Punkt findet und nicht ein beliebiges Zeichen (was afaik auch richtig ist) - und jetzt soll »[.]«  beliebige Zeichen finden (in dem Fall wäre es übrigends relativ sinnlos »-« und »_« noch extra aufzuführen - sie würden ja auch vom Punkt gefunden :-))

Uuups, da hab ich mich aber verlaufen ;-))

Du hast natürlcih recht, ich war irgendwie durch diesen ewig langen RegEx und an der Stelle durch diese ?-Kombination irgendwie etwas durcheinander ;-)

Die restlichen logischen Fehler (die sich einander ähneln) lasse ich jetzt mal außer Acht.
zu erwähnen wäre vielleicht noch ».{1}« was das gleiche ist wie ».« :-)

richtig.

Trotzdem mal noch ein Lösungsansatz für deinen RegEx: Du könntest den Modifier U (für ungreedy, also "unhungrig"/nicht gefräßig) verwenden.
ich würde den RegEx gleich wegwerfen - in E-Mailadressen sind nämlich noch _wesentlich_ mehr Zeichen erlaubt (schon alleine die Umlaute in Umlautdomains, siehe http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/email/)

Das wollte ich eigentlich auch so vermitteln, habe es dann aber nicht so direkt gesagt, in Anbedacht der Mühe, mit der der OP den RegEx erstellt hat :-P

$correct_nopt  = @fopen("http://www.".$treffer[1],"r");
woher willst du wissen, das
  a) die Domain per http ereichbar ist? (bei dem Domain-Teil meiner FH-Adresse (»student.fh-nuernberg.de«) würdest du hier auf Granit beißen)

das war ja das, was ich unten noch angemerkt habe, natürlich muss nicht jede Domain über http:// erreichnbar sein.

b) die Subdomain "www" eingerichtet ist

gut, dass habe ich wirklich übersehen. aber ich denke mal, ich lasse diesen gedanken eh wieder verfallen.

Was ich versuche ist, den Host aus dem Domain Teil anzusprechen. Dass da natürlich auch richtige E-Mails verweigert werden können, weil der Server z.B. grade down ist, ist klar.
selbst wenn der Test erfolgreich ist, ist immernochnicht sicher, dass die E-Mailadresse auch existiert ...

natürlich, aber wenn der Test erfolgreich ist, existiert wenigstens die Domain.

Na ja, da müsste man sicherlich noch was dran machen....
ja, z.B. einen ganz einfachen regulären Ausdruck wie »~^.+@.+..{1,20}$~« nehmen: so prüfst du auf den grundlegensten Syntax (zeichen@zeichen.zeichen) - und wirklich auf Gültigkeit und Existenz(!) kannst du sowieso nicht testen.

Hm, mehr wird man wohl nicht machen können. Die einzige Methode zu prüfen ob eine E-Mail Adresse existiert, wird wohl auch weiterhin bleiben, eine E-Mail mit irgendeinem zufällig generiertem String dahinzu schicken, den der Besucher dann fernen benötigt (Freischaltcode, Passwort...)

MfG, Dennis.

--
Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
Zufällige Hinweise:
------------------------
Interessiert in Modellbahn?
Wie wärs mit http://www.go-modellbahn.de?