alex: regulärer ausdruck nur zahlen

hi,

ich versuche gerade ein query_string zu überprüfen. dieser string darf nur aus zahlen bestehen, aber des klappt nicht so ganz. es dürfen keine buchstaben und keine anderen zeichen enthalten sein.

if($query =~ /[0-9]/) {
 print $query;
 print "<br>";
 } else {
 print "Sorry, verbotene Zeichen enthalten";
 }

was mache ich falsch.

  1. if($query =~ /[0-9]/) {
    print $query;
    print "<br>";
    } else {
    print "Sorry, verbotene Zeichen enthalten";
    }

    was mache ich falsch.

    if($query =~ /^\d*$/) { print"Das sind nur Zahlen" } else { print"Nö" }

    Alternativ

    if($query =~ /\D/) { print"Nö" } else { print"Das sind nur Zahlen" }

    gruß
    ich

    1. 1000 dank, jetzt geht es

    2. Halihallo ich

      if($query =~ /^\d*$/) { print"Das sind nur Zahlen" } else { print"Nö" }

      nicht ganz:

      if($query =~ /^\d+$/) { print "Das sind nur Ziffern"; } else { print "Nö"; }
                       ^ (ein kleiner aber feiner Unterschied.)

      Viele Grüsse

      Philipp

      --
      RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
      Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
      1. if($query =~ /^\d+$/) { print "Das sind nur Ziffern"; } else { print "Nö"; }
                         ^ (ein kleiner aber feiner Unterschied.)

        Hi!

        Falsch! Denn es ging ja nur darum zu testen, daß keine Nicht-Digits im String sind. Es sollte aber nicht getestet werden, daß auch wirklich Zeichen präsent sind! ;P

        gruß

        1. Halihallo Paul

          Falsch! Denn es ging ja nur darum zu testen, daß keine Nicht-Digits im String sind.

          Zitat von alex: "dieser string darf nur aus zahlen bestehen"
          Er sagt nicht, dass er aus keinen Nicht-Zahlen bestehen darf. Das ist ein Unterschied,
          zumal ich eine leere Zeichenfolge nicht als Ziffer sehe.

          Es sollte aber nicht getestet werden, daß auch wirklich Zeichen präsent sind! ;P

          Das ist zwar korrekt, aber zumindest für mich implizit (s. Erklärung oben) :-)

          Ja, ich weiss, etwas spitzfindig (gibt's dieses Wort überhaupt in Deutsch?), aber mir
          war gestern 5 Minuten langweilig :-)

          Viele Grüsse

          Philipp

          --
          RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
          Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
          1. Hi Philipp,

            Es sollte aber nicht getestet werden, daß auch wirklich Zeichen präsent sind! ;P
            Das ist zwar korrekt, aber zumindest für mich implizit (s. Erklärung oben) :-)

            aber selbst Dein regular expression stellt nicht sicher, daß eine Zahl vorliegt.

            Viele Grüße
                  Michael

            --
            T'Pol: I apologize if I acted inappropriately.
            V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
            (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
             => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
            Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
            1. Halihallo Michael

              Es sollte aber nicht getestet werden, daß auch wirklich Zeichen präsent sind! ;P
              Das ist zwar korrekt, aber zumindest für mich implizit (s. Erklärung oben) :-)
              aber selbst Dein regular expression stellt nicht sicher, daß eine Zahl vorliegt.

              Korrekt. Er stellt sicher, dass es sich um eine natürliche Zahl grösser gleich 0 handelt.
              ;)

              Viele Grüsse

              Philipp

              --
              RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
              Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
              1. Hi Philipp,

                aber selbst Dein regular expression stellt nicht sicher, daß eine Zahl vorliegt.
                Korrekt. Er stellt sicher, dass es sich um eine natürliche Zahl grösser gleich 0 handelt.

                mir ist nicht geläufig, daß natürliche Zahlen mit einer "0" beginnen dürfen.

                Viele Grüße
                      Michael

                --
                T'Pol: I apologize if I acted inappropriately.
                V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                 => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
                Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
                1. Halihallo Michael

                  aber selbst Dein regular expression stellt nicht sicher, daß eine Zahl vorliegt.
                  Korrekt. Er stellt sicher, dass es sich um eine natürliche Zahl grösser gleich 0 handelt.
                  mir ist nicht geläufig, daß natürliche Zahlen mit einer "0" beginnen dürfen.

                  s/grösser/oder/

                  Wie durch ein Wort den Sinn verdreht,
                  eine neue Menge No entsteht. ;)

                  Viele Grüsse

                  Philipp

                  --
                  RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
                  Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
                  1. Hi Philipp,

                    Halihallo Michael

                    aber selbst Dein regular expression stellt nicht sicher, daß eine Zahl vorliegt.
                    Korrekt. Er stellt sicher, dass es sich um eine natürliche Zahl grösser gleich 0 handelt.
                    mir ist nicht geläufig, daß natürliche Zahlen mit einer "0" beginnen dürfen.
                    s/grösser/oder/
                    Wie durch ein Wort den Sinn verdreht,
                    eine neue Menge No entsteht. ;)

                    bitte lies mein Posting nochmal ...

                    Viele Grüße
                          Michael

                    --
                    T'Pol: I apologize if I acted inappropriately.
                    V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                    (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                     => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
                    Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
                    1. Halihallo Michael

                      bitte lies mein Posting nochmal ...

                      (Mein) klassischer Fall von FastReading...

                      a) Dürfen die wirklich nicht mit einer 0 beginnen? - Hatte ich in der Mathe etwas
                         verpasst? AFAIK ist das kein Ausschlusskriterium für natürliche Zahlen, aber...
                      b) die 0 ist _wirklich nicht_ in der Menge der natürlichen Zahlen, deshalb habe ich dies
                         wohl auch aus deinem Posting gelesen (beim Überfliegen "interpoliert/zugedichtet").

                      Viele Grüsse

                      Philipp

                      --
                      RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
                      Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
                      1. Hi Philipp,

                        a) Dürfen die wirklich nicht mit einer 0 beginnen?

                        Gegenfrage: Wäre die Zahldarstellung eindeutig, wenn sie dürften?

                        Viele Grüße
                              Michael

                        --
                        T'Pol: I apologize if I acted inappropriately.
                        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                        (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                         => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
                        Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
                        1. Halihallo Michael

                          a) Dürfen die wirklich nicht mit einer 0 beginnen?
                          Gegenfrage: Wäre die Zahldarstellung eindeutig, wenn sie dürften?

                          Heureka! - Ich habs gefunden (das war doch die richtige Übersetzung davon, oder?). Der
                          Groschen ist gefallen :-)

                          Viele Grüsse

                          Philipp

                          --
                          RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
                          Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
                          1. Hi Philipp,

                            Heureka! - Ich habs gefunden (das war doch die richtige Übersetzung davon, oder?). Der
                            Groschen ist gefallen :-)

                            dann bleibt Dir nur noch das <I>, den regular expression für natürliche Zahlen hinzuschreiben ...

                            Viele Grüße
                                  Michael

                            --
                            T'Pol: I apologize if I acted inappropriately.
                            V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                            (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                             => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
                            Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
                            1. Halihallo Michael

                              dann bleibt Dir nur noch das <I>, den regular expression für natürliche Zahlen hinzuschreiben ...

                              Das <I>? - Naja, ich will mal nicht so sein:

                              if ($num =~ /[1]\d*$/) {
                                 print "$num is a natural number.";
                              }

                              man beachte, dieses mal ist das Sternchen nötig. Gut so? :-)

                              Viele Grüsse

                              Philipp

                              --
                              RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
                              Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.

                              1. 1-9 ↩︎

  2. Hi alex,

    ich versuche gerade ein query_string zu überprüfen. dieser string darf nur aus zahlen bestehen,

    definiere "zahlen". Positive? Negative? Ganze? (Offenbar meinst Du "Ziffern".)

    es dürfen keine buchstaben und keine anderen zeichen enthalten sein.

    if($query =~ /[0-9]/) {
    was mache ich falsch.

    Du prüfst die Existenz gültiger Zeichen, nicht aber die Nicht-Existenz ungültiger.

    Außerdem sollte bei "Zahlen" die erste Ziffer möglicherweise anders behandelt werden als alle weiteren ...

    Viele Grüße
          Michael

    --
    T'Pol: I apologize if I acted inappropriately.
    V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
    (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
     => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
    Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.