RegEx in PHP ohne Grenze?

Dsimon24

Lieutenant
Registriert
Aug. 2016
Beiträge
595
Moin zusammen,

ich arbeite mich gerade in RegEx ein. Bspw. möchte ich, dass in einem Input
Feld nur ein Vorname eingegeben werden kann: [A-Za-zÄÖÜßäöü \-]+

Warum kann ich da denn jetzt bspw. auch Dav3>/& eingeben?

Es fängt mit einem der im Ausdruck befindlichen Zeichen an, ab dann ist
alles andere egal? oder wie kann ich mitteilen, dass ich ausschließlich
nur diese Zeichen im Ausdruck haben möchte?

VG, David
 
  • Gefällt mir
Reaktionen: Salamimander
Dein RegExp prüft erstmal nur, ob ein Teil der Eingabe dem Pattern entspricht. Wenn du willst, dass der gesamte Text auf das Pattern zutreffen soll, musst du das RegExp noch etwas erweitern:
Code:
^[A-Za-zÄÖÜßäöü \-]+$
Das ^ steht hier für den Anfang des Texts, das $ für das Ende. D.h. es darf keinen Inhalt geben, der dem Pattern nicht entspricht.
 
  • Gefällt mir
Reaktionen: _RM_, roestzwiebel und bog
Typischerweise gibt es separate Funktionen zum suchen (Regex tritt irgendwo auf) und matchen (Regex beschreibt den String komplett). Die Antwort von @burglar225 beschreibt, wie man ersteres auf letzteres ummünzt.
 
  • Gefällt mir
Reaktionen: burglar225
Wo hast denn das her? 🤔

Nein, Regex paßt immer auf das was man sagt, es gibt keine impliziten Anker.
Der eine Ausdruck ist damit dem anderen zwar syntaktisch ähnlich, aber eben nicht gleich und semantisch grundverschieden. Man sieht das auch sofort, die Aussage von @Bagbag stimmt daher so auch nicht.

Folgende pattern gibt es:

1. A
Eingabe gültig, bzw match gefunden, wenn ein A Teil der Eingabe war.

2. ^A
Die Eingabe muss mit A beginnen. Der Rest ist egal.

3. A$
Die Eingabe muß mit A enden. Der Rest ist egal.

4. ^A$
Die Eingabe ist exakt A. Keine andere Möglichkeit vorhanden.

5. Je nach Dialekt sowas wie \b oder \< und \>
Wortgrenzen. \<Auf findet Aufgabe, aber nicht Hausaufgaben.


Regex setzen sich natürlich aus weiteren Konstruktionen zusammen- zB mindestens X, maximal Y Sequenzen eines pattern — aber auch dort gilt, gibts keine Anker, ist die Position unbestimmt.
 
Zurück
Oben