reguläre Ausdrücke von bis
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
art
ausprobieren
bedeutung
code
ding
formular
funktionieren
grad
gruppe
gruppierung
klammern
match
operator
programmcode
runde klammern
schritt
setzen
url
weglassen
ziffer
-
Hallo
Alle Themen die ich zu regulären Ausdrücken gefunden habe sind schon älter. Die wollte ich nicht wiederbeleben.
Ich möchte eine HTML Form validieren und nutze dazu <input text pattern>
Nun habe ich ein Feld, dass Werte von x bis y enthalten darf. Also meinetwegen 100 - 500
Nun habe ich mal etwas versucht und komme auf so ein Ergebnis
[12345][0123456789][0]
nur leider wäre damit auch 560 möglich und der Wert ist zu hoch
Gibt es da eine Chance, wie ich das abfangen kann? Ich möchte hier nicht auf Javascript für dieses Formular zurückgreifen.
PHP ist zu langsam, da ich erst nach absenden des Formulars validieren kann.
PS: Achja nicht wundern, dass alle Ziffern einzeln stehen anstatt [0-9] liegt an der Schleife die ich dafür probiert habe. Ist also durchaus so gewollt. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich weiß nicht, ob das optimal ist, aber 100-500 würde ich z.B. so angehen:
[1-4][1-9][1-9]|500
Ist jetzt ungetestet aber so in der Art sollte das funktionieren. -
davidlw schrieb:
Dass das ungetestet ist merkt man, denn es sollte wohl eher so aussehen:
Ich weiß nicht, ob das optimal ist, aber 100-500 würde ich z.B. so angehen:
[1-4][1-9][1-9]|500
Ist jetzt ungetestet aber so in der Art sollte das funktionieren.
Also je 0-9, sonst könntest du z.B. 100 gar nicht darstellen, sondern min 111.[1-4][0-9]{2}|500
-
Hackyourlife - perfekt Danke
Der Oder Operator ist mir auch irgendwann in der Nacht eingefallen ;)
Achja es sind nur 10er Schritte möglich, daher war die dritte Ziffer mit 0 schon richtig :-)
Mit den Klammern bin ich mir grad nicht sicher. Wenn es 100 - 520 ist wie muss ich dann Klamern setzen?
([1-4][0-9][0-9])|([5][0-2][0])
Müssen da Runde Klammern hin oder nicht. Ichhätte gesagt ohne runde Klammern bezieht sich das Oder nur auf den Ausdruck links bzw rechts vom Oder also nur auf die letzte und die erste Ziffer.
Ich wwerde dies zwar mit ausprobieren herausfinden, da die Diskussion hier aber ehh schon offen ist kann das auch geschwind fragen.
Zum ausprobieren komme ich vermutlich erst morgen Abend wieder. -
airfield-manager schrieb:
Der Oder-Operator bindet am schwächsten, du brauchst also überhaupt keine Klammern. Für 100-520 wird es allerdings umständlicher:
Mit den Klammern bin ich mir grad nicht sicher. Wenn es 100 - 520 ist wie muss ich dann Klamern setzen?
bzw für 10er-Schritte:[1-4][0-9]{2}|5[01][0-9]|520
[1-4][0-9]0|5[0-2]0
Beitrag zuletzt geändert: 6.7.2016 19:01:03 von hackyourlife -
Super Danke es funktioniert
Habe es jetzt so abgebildet
([1][0-9][0])|([2-4][0-9][0])|([5][0-2][0])
Wenn ich dich richtig verstehe könnte ich die runden Klammern weg lassen.
Haben die überhaupt eine Bedeutung? -
Ja, runde Klammern haben eine Bedeutung. Erstens zur Gruppierung, und zweitens als Match-Gruppen. Also:
ist nicht das selbe wie(ab|cd)|(ef|gh)
Match-Gruppen: wenn du jetzt einen Treffer hast, dann willst du vllt wissen, welchen Wert da jetzt ein gewisser Teil hatte. Also z.B:ab|cd|ef|gh
Da interessiert dich, welches Ding das jetzt war, und mit der Klammer sagst du: der Wert, den dasdas (\w+) Ding
tatsächlich hatte, interessiert mich. Da kannst du dann auch extra vom Programmcode aus darauf zugreifen.\w+
In deinem Beispiel kann man die Klammern weglassen, da alle Oder-Operatoren auf der selben Ebene funktionieren sollen, und es einfach nur 3 Möglichkeiten gibt.
Zeichenklassen wie
kannst du dir übrigens sparen, und einfach direkt das Zeichen angeben, in dem Fall also[0]
. Mehr als unlesbar wird es durch die unnötige Zeichenklasse jedenfalls nicht.0
Warum du 1x0 extra herausgezogen hast, ist mir auch nicht klar. Vereinfacht man das, erhält man jedenfalls das, was ich bereits geschrieben habe (hat die selbe Bedeutung!):[1-4][0-9]0|5[0-2]0
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage