Regulärer Ausdruck für die Prüfung der Anzahl gleicher Zeichen?
nadine
- php
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
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
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
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
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
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
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
Hallo Gunnar.
Mit backreferencing dürfte es dann gehen: /([^\s\d])\1{2,}/
Einen schönen Montag noch.
Gruß, Ash*schleichwerb*ura
Hello,
Und warum hier nicht?
http://pcre.nophia.de/evaluate/6664395a3d2e76c4bb5f2399b3d4a224/index.php#output
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
hi,
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
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