Johannes Bauer: Mein RegExp für Email akzeptiert keinen "-"

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...
Wo bringe ich den ein?

MfG Johannes


  1. _a-z0-9 ↩︎

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

    --
    X-Will-Answer-Email: No

    1. _a-z0-9 ↩︎

    1. Mmmh,

      das habe ich nicht ganz gerafft...
      Könntest du nicht den ganzen Ausdruck posten, bitte?

      MfG Johann

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

        --
        X-Will-Answer-Email: No
    2. 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

      --
      Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.

      1. _a-z0-9 ↩︎

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

        --
        X-Will-Answer-Email: No
        1. 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 ;-)

          --
          Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
          1. 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

            --
            X-Will-Answer-Email: No
            1. 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

              --
              Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
  2. Hi,

    ich würde es ja gerne richtig stellen, leider weiß ich das problem mit dem Strich nicht zu lösen...

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


    1. _a-z0-9 ↩︎

    2. _a-z0-9 ↩︎

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

    --
    "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)

    1. _a-z0-9 ↩︎

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

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

        --
        "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
  5. 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