nadine: Regulärer Ausdruck für die Prüfung der Anzahl gleicher Zeichen?

Hallo zusammen!

Gibt es eine Syntax für einen regulären Ausdruck in PHP, mit dem ich das Vorkommen von mehreren gleichen Zeichen hintereinander prüfen kann?

Z.B. darf ein Benutzer nicht 'dooof' in das Formular eingeben. Mit substr_count ist es da wohl nicht getan.

Es geht nämlich nicht um ein festgelegtes Muster an Zeichen wie 'beispiel' oder 'aaaa' oder 'xyz'. Sondern ich möchte wissen, ob in einem Wort eine n Anzahl an gleichen Buchstaben hintereinander vorkommt.

Danke und Gruß,
nadine

  1. Hallo,

    Es geht nämlich nicht um ein festgelegtes Muster an Zeichen wie 'beispiel' oder 'aaaa' oder 'xyz'. Sondern ich möchte wissen, ob in einem Wort eine n Anzahl an gleichen Buchstaben hintereinander vorkommt.

    Du könntest es so formulieren: /x{3,}/
    Das findet drei und mehr aufeinanderfolgende "x".

    Ciao,
    Andreas

    --
    "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
    1. Hallo und danke,

      Du könntest es so formulieren: /x{3,}/
      Das findet drei und mehr aufeinanderfolgende "x".

      Ciao,
      Andreas

      Sowas in der Art? [\S]{3,}

      »»

      Gunnar

      das sind Ansätze, die ich schon habe. Mein Problem liegt darin, dass ich ein Muster für irgend einen Buchstaben brauche, der 3 mal vorkommen kann.

      Der Ansatz mit \S prüft nur auf min. 3 Stellen, aber nicht auf min. 3 Stellen des gleichen Buchstabens.

      Danke und Grüße,
      nadine

      1. hi,

        Mein Problem liegt darin, dass ich ein Muster für irgend einen Buchstaben brauche, der 3 mal vorkommen kann.

        Dafür eigenen sich Reguläre Ausdrücke kaum.

        Warum durchläufst du nicht einfach den Text in einer Schleife, und lässt einen Zähler mitlaufen, falls das aktuelle Zeichen gleich dem vorherigen ist?
        Falls erforderlich, kannst du dir dabei auch die aktuelle(n) (Start-)Position(en) merken, um dann mit weiteren Stringfunktionen auf de(m|n) Treffer(n) weiterzuarbeiten.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi wahsaga,

          danke für deine Lösung.

          Hab allerdings eine Lösung mit preg gefunden. Und da ich sie keinem vorenthalten möchte, kann ich sagen:
          \n ist in diesem Fall mein Freund.

          Danke nochmal,
          Nadine

          1. hi,

            Hab allerdings eine Lösung mit preg gefunden. Und da ich sie keinem vorenthalten möchte, kann ich sagen:
            \n ist in diesem Fall mein Freund.

            Wenn das dein Problem löst, kann man sich aber nur schwerlich vorstellen, dass deine eingangs abgelieferte Beschreibung eben dessen auch nur am Rande etwas mit dem tatsächlichen zu tun gehabt haben kann ...

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hello out there!

        Der Ansatz mit \S prüft nur auf min. 3 Stellen, aber nicht auf min. 3 Stellen des gleichen Buchstabens.

        Ja, mein Fehler. Und die eckigen Klammern waren auch überflüssig. Wollte erst [A-Za-z] schreiben, was Umlaute und Zeichen mit Akzent etc. ausschließt.

        Whitespaces könnten ja in einem Text mehrere hintereinander folgen, ah und Ziffern auch, also die auch rausnehmen: [^\s\d]

        Mit backreferencing dürfte es dann gehen: /([^\s\d])\1{2,}/

        See ya up the road,
        Gunnar

        --
        “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
        1. Hallo Gunnar.

          Mit backreferencing dürfte es dann gehen: /([^\s\d])\1{2,}/

          Tut es.

          Einen schönen Montag noch.

          Gruß, Ash*schleichwerb*ura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          mathbr:del.icio.us/ mathbr:w00t/
          1. Hello,

            Tut es.

            Und warum hier nicht?
            http://pcre.nophia.de/evaluate/6664395a3d2e76c4bb5f2399b3d4a224/index.php#output

            Harzliche Grüße vom Berg
            http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau

            1. hi,

              Tut es.

              Und warum hier nicht?
              http://pcre.nophia.de/evaluate/6664395a3d2e76c4bb5f2399b3d4a224/index.php#output

              Weil das Sonderzeichen 'ö' Probleme macht.
              Noch zusätzlich den Modifier u für PCRE_UTF8 zu benutzen, hülfe (was dieses Tool aber offenbar derzeit nicht unterstützt).

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hello out there!

    Gibt es eine Syntax für einen regulären Ausdruck in PHP, mit dem ich das Vorkommen von mehreren gleichen Zeichen hintereinander prüfen kann?

    Sowas in der Art? [\S]{3,}

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)