seth: 5- bis 10-stellige zahl in string matchen

Beitrag lesen

gudn tach!

Ich möchte aus folgenden Strings das vorkommen einer Zahl prüfen, wie:
"der Text ist doof 12345678"
"Probetext 1234567890"
"1234567"
"Noch mehr 123456789 Text kommt nicht"

ich habe das mit folgender Funktion probiert:
if (preg_match("/^[0-9]{5,10}$/", $text))
  echo "Zahl ist drin!";

Das funzt aber nicht. :'(
Also {5,10} steht drin, da die Zahl mindestens 5 Stellen, maximal aber 10 nicht überschreiten soll.

es kamen schon so viele antworten kamen und auch ich moechte mich einer weiteren beteiligen. ich fand bisher die antwort von Gunnar am besten, da sie die richtigen fragen nach den grenzen stellt.

das regexp-pattern fuer die aufgabe, strings zu matchen, die 5- bis 10-stellige zahlen enthalten, koennte also z.b. lauten:
1.  /\b[0-9]{5,10}\b/
2.  /(?<![0-9])[0-9]{5,10}(?![0-9])/
oder
3.  /(?<![^ ])[0-9]{5,10}(?![^ ])/

zu 1.: \b weisst etwa "word boundary" und markiert eine stelle, an der ein zeichen, dass ein buchstabe, eine ziffer oder ein '_' ist, nicht auf ein zeichen treffen darf, das ebenfalls buchstabe, ziffer oder '_' ist. gematcht wuerde also z.b. "1234567", "foo 123456-193865 bar", aber weder foo123456-193865bar" noch "foo12345bar".

zu 2.: (?<![0-9]) heisst etwa "vor dem naechsten zeichen darf kein zeichen der klasse [0-9] stehen". entsprechend heisst (?![0-9]) etwa "nach dem naechsten zeichen darf kein zeichen der klasse [0-9] stehen". gematcht wuerde also z.b. "1234567", "foo 123456-193865 bar" und auch "foo123456-193865bar" sowie "foo12345bar".

zu 3.: (?<![^ ]) heisst etwa "vor dem naechsten zeichen darf kein zeichen stehen, das kein leerzeichen ist". entsprechend heisst (?![^ ]) etwa "nach dem naechsten zeichen darf kein zeichen stehen, das kein leerzeichen ist". beachte, dass dies etwas anderes ist als (?<= ) ("vor dem naechsten zeichen muss ein leerzeichen stehen"). gematcht wuerde also z.b. "1234567" und "foo 123456 193865 bar", aber weder "foo 123456-193865 bar" noch "foo123456-193865bar" noch "foo12345bar".

prost
seth

0 45

Probleme mit regulärem Ausdruck

DocSky
  • php
  1. 0
    Melvin Cowznofski
    1. 0
      dedlfix
      1. 0
        Melvin Cowznofski
        1. 1
          Gunnar Bittersmann
          1. 0
            Christian Kruse
          2. 0
            dedlfix
          3. 0

            regexp: \d != [0-9]

            seth
            • programmiertechnik
      2. 0
        dedlfix
        1. 0
          Melvin Cowznofski
          1. 0
            Gunnar Bittersmann
            1. 0
              Melvin Cowznofski
              1. 0
                Matthias Apsel
                1. 0
                  Melvin Cowznofski
                  1. 0

                    Noch immer keine Lösung?

                    Melvin Cowznofski
                    1. 0
                      dedlfix
                      1. 0
                        Melvin Cowznofski
                        1. 0
                          dedlfix
                          1. 0
                            Melvin Cowznofski
                            1. 0
                              dedlfix
                              1. 0
                                Melvin Cowznofski
                                1. 0
                                  dedlfix
                                  1. 0
                                    Melvin Cowznofski
                                    1. 0
                                      dedlfix
                                      1. 0

                                        Frage nun beantwortet!

                                        Melvin Cowznofski
                    2. 0
                      Gunnar Bittersmann
                      1. 0
                        Melvin Cowznofski
                        1. 0
                          dedlfix
                        2. 0
                          misterunknown
                2. 0
                  dedlfix
                  1. 0

                    Postleitzahlen

                    Matthias Apsel
                    • sonstiges
                    1. 0
                      Tobias Hahner
                      1. 0
                        Matthias Apsel
                        1. 0
                          Tobias Hahner
                          1. 0
                            Matthias Apsel
                            1. 0
                              Tobias Hahner
                            2. 0
                              Der Martin
              2. 0
                Gunnar Bittersmann
    2. 0
      Gunnar Bittersmann
      1. 0
        Melvin Cowznofski
      2. 0
        DocSky
    3. 0
      DocSky
      1. 0
        Gunnar Bittersmann
      2. 0
        dedlfix
  2. 0

    5- bis 10-stellige zahl in string matchen

    seth