[RegEx] Mail-Adressen Check

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [RegEx] Mail-Adressen Check

    Hallo,

    ich bin gerade dabei einen RegEx zu schreiben mit dem man mail-Adressen auf ihre Validität prüfen kann, bin auch relativ weit damit. Nur wird dir Zeichenbegrenzung bei der TLD nicht durchgesetzt.

    Zum Beispiel würde folgende Adresse immer noch als Valide gelten:

    Code:
    [email]muster@test.abcd[/email]ef
    Obwohl die TLD höchstens 4 Zeichen lang sein dürfte.

    Hier das Pattern:

    PHP-Code:

    $pattern
    ="/[a-z0-9]+([\.\-\_]([a-z0-9-_]+))[a-z0-9]+
                     @([a-z0-9]+[-]*[a-z0-9]+)\.([a-z]{2,4}){1}|museum/i"

    Wäre dankbar für Lösungsvorschläge.

    PS: Das im Tutorial von Sky genannte Pattern funktioniert nicht richtig bzw. erkennt eindeutig valide Adressen nicht.

    Gruss Spliffster

  • #2
    Re: [RegEx] Mail-Adressen Check

    Original geschrieben von Spliffster
    Obwohl die TLD höchstens 4 Zeichen lang sein dürfte.
    War ja klar ... nicht, dass es nicht schon unzählige Threads zu dem Thema geben würde - jetzt kommt auch noch wieder so eine Unsinns-Aussage.

    .museum existiert beispielsweise.

    Und auch
    "hallo esel"@example.org
    ist eine gültige Emailadresse.


    Mein Fazit: Leute, halte euch nicht immer mit so einem unnützen Scheiß auf. Meinetwegen prüfen, ob ein @ drin ist, gefolgt von einer Domainnamezeichen - Punkt - Buchtstaben-Kombination - aber das war's dann auch, mehr ist wenig sinnvoll. (Und insb. dann, wenn man offenbar die Regeln für den Aufbau einer gültigen Emailadresse noch nicht mal vollständig kennt, wie in diesem Falle.)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      um wahsagas appell evtl. noch etwas zu ergänzen: wer seine email-adresse nicht preisgeben will, gibt eine völlig valide email-adresse ein, die ihm nicht gehört. z.b. support@microsoft.com oder foo@example.com - dagegen kann man nichts machen. sogar für etliche aktivierungsmails gibt es zahlreiche schrott-mail-services.

      bevor man jetzt mit dem argument kommt "aber das retter auch vor tippfehlern" -- meine güte, man kann dem user doch ein wenig zurechnungsfähigkeit zusprechen, oder? schließlich gibt's noch den trick mit dem "geben sie ihre email-adresse bitte erneut ein, um tippfehler zu vermeiden".

      Kommentar


      • #4
        ich schließ mich meinen vorgängern einfach mal an

        mein neues motto: "Je simpler, desto besser .:" Man weiß schließlich nie, welche TLDs noch dazu kommen. Museum ist nur ein Beispiel.

        Kommentar


        • #5
          Danke für die aufmunternden Worte

          Um es mal zu verdeutlichen, das ganze ist nicht viel mehr als eine Übungsaufgabe um auch mit komplexeren Regexen umgehen zu lernen. Und falls du dir das Pattern angeschaut hättest würdest du erkennen, dass ich in diesem Fall eine Beschränkung auf 4 Zeichen für die TLD festgelegt habe. Diese wird aber nicht durchgesetzt und dafür würde ich gerne den Grund wissen! Mir ist klar das eine TLD nicht auf nur 4 Zeichen beschränkt ist und ich kenne auch sofort-mail.de und diese netten Scherze. Aber das ist in ,wiederum, diesem Fall nebensächlich.

          Fazit: Lass deinen Frust nicht an mir aus Wahsaga.

          Kommentar


          • #6
            Fazit: Lass deinen Frust nicht an mir aus Wahsaga.
            Mit solchen Ausrufen solltest du hier vorsichtig sein

            Kommentar


            • #7
              Allenfalls weil ein nicht escapter . (Punkt) als Zeichen für alles gilt. ??
              PHP-Code:
              $pattern="/[a-z0-9]+([.-_]([a-z0-9-_]+))[a-z0-9]+
                               @([a-z0-9]+[-]*[a-z0-9]+)\\.([a-z]{2,4}){1}|museum/i"

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Noch was kleines: Wenn du sicher sein willst, dass die Email Adresse mit dem RegExp übereinstimmt, dann musst du diese noch vergleichen.
                PHP-Code:
                $email $_POST['email'];
                preg_match("/\\w{1,}@\\w{1,}\\.(museum|\\w{2,3})/",$email,$temp);
                if(
                $temp[0] == $email){
                    echo 
                'Adresse korrekt. Vielen Dank';
                }
                else{
                    echo 
                'Adresse nicht korrekt';

                Gruss

                tobi

                EDIT:

                Noch ne kleine Korrektur:
                $pattern = "/\w{1,}@\w{1,}\.(museum\b|\w{2,3}\b/"

                So gibst keine Treffer wenn noch mehr Zeichen folgen. Damit ist wenn
                isset($temp[0]) === true
                die Emailadresse nach deinem Schema korrekt.

                Zuletzt geändert von jahlives; 07.10.2005, 18:54.
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  einfach nen $ und ^ da ran und gut ist.

                  Kommentar


                  • #10
                    An dem nicht escapten Punkt dürfte es nicht liegen, auch wenn ich es in dem Beispiel wohl vergessen bzw. den backslash beim editieren verschlampt habe, hatte ich den Punkt eigentlich die ganze Zeit über escaped.

                    Ansonsten werde ich es mal testen, müsste dafür aber erstmal an meinen anderen Rechner. Weswegen eine Antwort wohl etwas auf sich warten lassen dürfte. Trotzdem schonmal Danke.

                    Gruss Spliffster

                    Kommentar


                    • #11
                      Ok funktioniert jetzt, das $-Zeichen hat gefehlt. Hier das fertige Pattern:

                      Code:
                      $pattern="/[a-z0-9]+([\.\-\_ ]*([a-z0-9-_]+))[a-z0-9]+
                      @([a-z0-9]+[-]*[a-z0-9]+)\.([a-z]{2,4}){1}$|museum/i";
                      Danke.

                      Gruss Spliffster

                      Zuletzt geändert von Spliffster; 08.10.2005, 19:48.

                      Kommentar


                      • #12
                        Ich benutze zum Validieren den folgenden Ausdruck:
                        PHP-Code:
                        ^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$ 
                        Leider werden dann aber Adressen des Typs "o.-lli@gmx.de" wegen des ".-" als falsch deklariert. Vielleicht kann das ja noch jemand lösen.

                        CU
                        rivella

                        Kommentar


                        • #13
                          Du solltest das Fragezeichen vielleicht mal durch ein plus bzw. Stern ersetzen.

                          Kommentar


                          • #14
                            http://aktuell.de.selfhtml.org/tipps...technik/email/

                            HTH

                            Kommentar


                            • #15
                              hier findest du einige validationen, unter anderem auch den email check!
                              http://www.phpfuncs.org/?goto=4

                              Kommentar

                              Lädt...
                              X