regex hilfe

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #3
      Ich glaub der hier ist besser:

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

      Das ermöglicht kein == kein =!, etc.
      Last edited by 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

      Comment


      • #4

        und jetzt noch max. 2 vorkommastellen

        Comment


        • #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

          Comment


          • #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*

            Comment


            • #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? =)
              Last edited by polar; 19-03-2003, 19:08.

              Comment


              • #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

                Comment


                • #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

                  Comment


                  • #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

                    Comment


                    • #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

                      Comment


                      • #12
                        rofl...

                        *beineindiehandnehm*

                        Comment

                        Working...
                        X