wieder mal preg_match

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

  • wieder mal preg_match

    Hallo Liste
    Bevor ich hier schrieb, habe etliche vergebliche Versuche unternommen mit regex eine vernünftige Prüfung vorzunehmen. Vor lauter eckigen, runden und geschweiften Klammern sehe ich die Lösung einfach nicht.
    Die Problemstellung (es handelt sich aussschließlich um Ziffern mit 'nem optionalen Komma mittendrin)

    1. die erste Ziffer immer von 0-9
    2. danach optional die 2 te bis 3 te Ziffer von 0-9
    3. weiter dann ein Komma, jedoch nur wenn Punkt 4 erfüllt ist
    4. nach dem Komma 1 te bis 2 te Ziffer von 0-9

    Beispiele
    Zutreffend:
    0,25
    1
    57,6
    407,59

    Nicht zutreffend:
    1,
    ,67
    019

    Vielen Dank im Voraus, für Eure Hilfestellung

    jay-ar
    Zuletzt geändert von jay-ar; 24.08.2006, 00:55.

  • #2
    Re: wieder mal preg_match

    Original geschrieben von jay-ar
    Nicht zutreffend:
    ...
    019
    dann hast du dich aber bei punkt 1 und 2 nicht richtig ausgedrückt.
    aber ich glaube, ich weiß, was du möchtest:
    Code:
    $values=array('0,25', '1', '57,6', '407,59', '1,', ',67', '019');
    
    foreach($values as $value)
     if(preg_match('/^(0(,\d{1,2})?|[1-9]\d{0,2}(,\d{1,2})?)$/', $value))
      echo $value.' : match<br />';
     else
      echo $value.' : NOMATCH!!!<br />';
    [edit]
    sonderfall hinzugefügt: einzelne 0
    Zuletzt geändert von 3DMax; 24.08.2006, 09:33.

    Kommentar


    • #3
      Re: Re: wieder mal preg_match

      Hallo 3DMax
      Original geschrieben von 3DMax
      [B]dann hast du dich aber bei punkt 1 und 2 nicht richtig ausgedrückt.
      aber ich glaube, ich weiß, was du möchtest:
      Ja genau
      Punkt 1 hätte lauten sollen: erste Ziffer nur 0 wenn das Komma folgt

      Funktioniert prima
      Vor lauter rumwursteln habe ich bei meinen kläglichen Versuchen das "|" ganz ausser acht gelassen.

      Danke nochmals für die Lektion in REGEX

      jay-ar

      Kommentar


      • #4
        Re: Re: Re: wieder mal preg_match

        Original geschrieben von jay-ar
        Punkt 1 hätte lauten sollen: erste Ziffer nur 0 wenn das Komma folgt
        na oder wenn die null allein steht - oder willst du das nicht? dann müsste noch das zweite klammernpaar + ? weg.

        Kommentar


        • #5
          Hallo 3DMax
          Stimmt, da hatte ich noch nicht zu Ende gedacht.
          Im grunde sollen die Werte
          0
          0,0
          0,00
          auch nicht zutreffend sein.

          Mit REGEX muss ich wohl noch üben. Ich habe das in meiner Funktion Dank Deiner Hilfe vorerst so gelöst.

          PHP-Code:
          function ueberpruefung_gewicht($val) {
             
          $msg "";
             if (
          $val == "0" || $val == "0,0" || $val == "0,00")
                  
          $msg .= "Das Gewicht stimmt nicht.\n";
             elseif(!
          preg_match('/^(0(,\d{1,2})?|[1-9]\d{0,2}(,\d{1,2})?)$/'$val))
                  
          $msg .= "Das Gewicht stimmt nicht.\n";
             return 
          $msg;

          Danke nochmals

          jay-ar

          Kommentar


          • #6
            wird dann aber langsam unübersichtlich :
            Code:
            '/^(0,([1-9]\d?|0[1-9])|[1-9]\d{0,2}(,\d{1,2})?)$/'

            Kommentar

            Lädt...
            X