RegEx um Nickname zu überprüfen

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

  • RegEx um Nickname zu überprüfen

    Hi,
    ich will einen Regulären Ausdruck schreiben der überprüft, ob eine Name aus Buchstaben, Zahlen, Umlauten, Unterstrich, Hochkomma, Punkt oder Bindestrich besteht. Alles andere soll nicht erlaubt sein.
    Dazu habe ich folgenden (nicht funktionierenden Code geschrieben)
    Er akzeptiert leider auch andere Sonderzeichen!

    da dieses Forum meine escapes nicht richtig setzt hier der Code in externer Quelle: http://nopaste.php-q.net/265734
    Flashtuts - Flash Tutorials und Downloads für alle Versionen
    psdtuts - Photoshop Tutorials, Galerie, Battles

  • #2
    Code:
    if(!preg_match('/([a-zA-Z0-9 üöäßÜÄÖ _\'\.\-]*)/', $_POST['name'])) {
            $formular_korrekt = false;
            $error_name = 'Name darf nur Buchstaben, Zahlen, Unterstrich, Punkt und Bindestrich beinhalten';
        }
    ist nicht schlecht, schreib mal ^ und $ davor, bzw. dahinter.
    Auf http://www.php.net/manual/reference....ern.syntax.php ist es beschrieben.
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Code:
      $reg = '/^[\w|_|\-|\d|\\'|öäü]*$/is';
      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


      • #4
        ich danke euch sehr. Es funktioniert

        Also beginn ^ und ende $ muss also immer gesetzt sein?
        Flashtuts - Flash Tutorials und Downloads für alle Versionen
        psdtuts - Photoshop Tutorials, Galerie, Battles

        Kommentar


        • #5
          Also beginn ^ und ende $ muss also immer gesetzt sein?
          Wenn du willst, dass der ganze String mit dem RegExp übereinstimmt dann JA

          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


          • #6
            Original geschrieben von konSumi
            Also beginn ^ und ende $ muss also immer gesetzt sein?
            Jein.

            ^ steht für den Beginn der Zeichenkette, $ für das Ende.

            Wenn du jetzt "xyz*blah*blubb" mit deinem Suchmuster vergleichst, ohne zu fordern dass dieses vom Beginn bis zum Ende der Zeichenkette "erfüllt" sein muss - dann ergibt die Prüfung natürlich wahr, weil bereits der erste Teil xyz die Bedingung "nur Buchstaben und ein paar Sonderzeichen, mehrmals wiederholt" erfüllt.

            Mit ^ und $ forderst du jedoch, dass das Suchmuster auf die komplette Zeichenkette passen muss - und dann ergibt die Prüfung hier falsch, weil * in der Zeichenkette drinsteht, und damit dein Suchmuster nicht mehr passt.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Original geschrieben von jahlives
              Code:
              $reg = '/^[\w|_|\-|\d|\\'|öäü]*$/is';
              Gruss

              tobi
              Ein "oder" in der Zeichenklasse ist sinnlos, da es da kein "oder" ist. Außerdem matcht \w auch \d sowie _

              EDIT:
              außerdem sollte man aus dem * ein + machen, denn sonst wäre das alles optional und ein leerer Nickname wäre erlaubt.
              Zuletzt geändert von Shurakai; 03.01.2007, 18:07.
              Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
              var_dump(), print_r(), debug_backtrace und echo.
              Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
              Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
              Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

              Kommentar


              • #8
                Und wie muss ich das anpassen, wenn keine Umlaute zugelassen sein sollen?
                it's not a bug,
                it's a feature!

                Kommentar

                Lädt...
                X