regex hilfe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • regex hilfe

    nabend,

    ich bräucht mal hilfe bei der formulierung eines regex, komme da nicht wirklich zu einem ergebnis

    kurze erklärung:

    - der user gibt in einem textfeld folgenden ausdruck an: '< 1,08'

    - im ausdruck sind diese operatoren zulässig: '=', '!=', '>', '<', '>=', '<='

    - das zahlenformat muss eine oder zwei stellen vor dem komma und beliebig viele nachkommastellen sein.

    jetzt möchte ich den vom user angegeben ausdruck validieren, aber schaffe es nicht.

    es muss ja auch geprüft werden ob der user nicht zb. ' <!= 100' als ausdruck angibt, denn das wäre ja ungültig.

    weiss zufällig jemand rat?

  • #2
    versuch das mal

    PHP-Code:
    if (ereg("^([=!<>]{1,2})?(([0-9]{1,2}){1})(,([0-9]*))?$"$deinString$regs)) {

    ....

    wenn du aber explizit auch "<!" ausschliessen willst musst du das extra machen
    "<!=" sollte mit dem obigen aber auch nich gehen

    Kommentar


    • #3
      Ich glaub der hier ist besser:

      preg_match("/^([!<>])?=? ?(([0-9]*))(,([0-9]*))?$/", $string);

      Das ermöglicht kein == kein =!, etc.
      Zuletzt geändert von MelloPie; 19.03.2003, 07:42.
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4

        und jetzt noch max. 2 vorkommastellen

        Kommentar


        • #5
          ach das hatte ich gar net gelesen...
          preg_match("/^([!<>])?=? ?(([0-9]{1,2}))(,([0-9]*))?$/", $string);

          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            hey erstmal danke für die fixe antwort

            allerdings werden so nur zahlen mit zwei stellen vor dem komma validiert. zahlen mit einer stelle vor dem komma werden abgelehnt

            hmm und einige operatoren werden auch nicht richtig validiert.. zb. '='

            ok dann werd ich mal schauen, ob ich das nicht doch hinbekomme *g*

            Kommentar


            • #7
              also wenn ich mir das muster so anschaue, sollte es schon greifen !? komisch..

              /^([!<>])?=? ? (([0-9]{1,2}))(,([0-9]*))?$/

              aber wozu das ? (fett dargestellt)

              gilt das für noch die operatoren (also: '=', '<', usw) oder für die zahl danach???

              ich versuch das muster mal zu übersetzen

              - string anfang
              - '!', '<' oder '>' muss vorhanden sein
              - dann kommt '='
              - oder ein leerzeichen
              - gefolgt von einer zahl mit mindestenst einer, maximal aber zwei stellen
              - dann das komma
              - danach beliebig viele zahlen
              - string ende

              richtig? =)
              Zuletzt geändert von polar; 19.03.2003, 19:08.

              Kommentar


              • #8
                Also bei mir gehts oder ich hab die Frage nicht verstanden.
                Es wird immer ein Operator mit ner Zahl gegeben???
                das eine ? ist nur falls jemand ein leerzeichen eingibt zwischen operator und Zahl
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  ja hier ein paar beispiele...

                  < 1,0

                  >= 30,123456

                  != 04,99

                  usw...

                  also immer ein typischer operator und dann eine zahl wie beschrieben.

                  eine bis zwei stellen vor dem komma, beliebig viele nachkommastellen


                  das eine ? ist nur falls jemand ein leerzeichen eingibt zwischen operator und Zahl
                  es soll ja ein leerzeichen zwischen op und zahl vorhanden sein

                  Kommentar


                  • #10
                    sorry .. das muster passt. war jetzt wieder mein fehler *g*

                    ich lass das muster in einer funktion validieren. in einem fall, hab ich eine falsche übergabe gemacht... sorry

                    Kommentar


                    • #11
                      Warte ich such meine Flinte, lauf schon mal los...
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        rofl...

                        *beineindiehandnehm*

                        Kommentar

                        Lädt...
                        X