kostenloser Webspace werbefrei: lima-city


reguläre Ausdrücke von bis

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    airfield-manager

    Kostenloser Webspace von airfield-manager

    airfield-manager hat kostenlosen Webspace.

    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    davidlw schrieb:
    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.
    Dass das ungetestet ist merkt man, denn es sollte wohl eher so aussehen:
    [1-4][0-9]{2}|500
    Also je 0-9, sonst könntest du z.B. 100 gar nicht darstellen, sondern min 111.
  5. Autor dieses Themas

    airfield-manager

    Kostenloser Webspace von airfield-manager

    airfield-manager hat kostenlosen Webspace.

    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. :-D
    Zum ausprobieren komme ich vermutlich erst morgen Abend wieder.
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    airfield-manager schrieb:
    Mit den Klammern bin ich mir grad nicht sicher. Wenn es 100 - 520 ist wie muss ich dann Klamern setzen?
    Der Oder-Operator bindet am schwächsten, du brauchst also überhaupt keine Klammern. Für 100-520 wird es allerdings umständlicher:
    [1-4][0-9]{2}|5[01][0-9]|520
    bzw für 10er-Schritte:
    [1-4][0-9]0|5[0-2]0


    Beitrag zuletzt geändert: 6.7.2016 19:01:03 von hackyourlife
  7. Autor dieses Themas

    airfield-manager

    Kostenloser Webspace von airfield-manager

    airfield-manager hat kostenlosen Webspace.

    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?
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Ja, runde Klammern haben eine Bedeutung. Erstens zur Gruppierung, und zweitens als Match-Gruppen. Also:
    (ab|cd)|(ef|gh)
    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:
    das (\w+) Ding
    Da interessiert dich, welches Ding das jetzt war, und mit der Klammer sagst du: der Wert, den das
    \w+
    tatsächlich hatte, interessiert mich. Da kannst du dann auch extra vom Programmcode aus darauf zugreifen.

    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
    [0]
    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.

    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
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!