Rüdiger: regular Expression

hallo zusammen

jetzt sitz ich an dem problem schon 2 std drann hab seitenweise das internet durchgepflügt, aber ich check das nicht :-(

in einem formular soll der user eine telefonnummer rein schreiben,
die sollte so aussehen +49-674 883 334.
erlaubt sind nur zahlen, ein +, ein - oder ein leerzeichen.
wenn er die nummer ohne + und bindestrich reinschreibt ist mir das egal.

das ist mein versuch, ich verstehs aber nicht warum das nicht funzt
preg_match("/[1]{8,20}$/", $telnr)

vielen dank im voraus für die hilfe

Gruß Rüdiger


  1. 0-9+-\s ↩︎

  1. Moin!

    1. Was heißt "funzen"? ;-) (SCNR)
    2. Dein Ausdruck besagt, daß 8-20 Zeichen erlaubt sind und diese könen Ziffern, "+", '-" oder Whitspace (als space und tab) sein. Was funktioniert denn nicht.

    -- Skeeve

    1. Moin!

      1. Was heißt "funzen"? ;-) (SCNR)
      2. Dein Ausdruck besagt, daß 8-20 Zeichen erlaubt sind und diese könen Ziffern, "+", '-" oder Whitspace (als space und tab) sein. Was funktioniert denn nicht.

      -- Skeeve

      hallo zusammen

      erstmal vielen dank für die vielen und schellen antworten
      so geht es jetz
      preg_match("/[1]{8,18}$/",$telnr)
      ich dachte ich muss "-" und "+" nicht mit einem "" quoten
      @Skeeve: war eine ungenaue aussage von mir, sorry
      ich konnte in das feld schreiben was ich wollte und mein script hat mich nie geschimpft ;-)

      danke nochmal
      einen schönen abend euch allen
      Gruß Rüdiger


      1. 0-9+-\s ↩︎

  2. Plus- und Minuszeichen sind Metazeichen:

    + -

    ist die richtige Schreibweise.

    1. Moin!

      Plus- und Minuszeichen sind Metazeichen:

      + -

      ist die richtige Schreibweise.

      In einer Zeichenklasse ist das für ein "+" nicht nötig. Füs "-" schon und das habe ich unten in meiner Antwort glatt übersehen... Schande über mich ;-)

      -- Skeeve

      1. gudn tach!

        Plus- und Minuszeichen sind Metazeichen:

        + -

        ist die richtige Schreibweise.
        In einer Zeichenklasse ist das für ein "+" nicht nötig.

        soweit stimmt's.

        Füs "-" schon und das habe ich unten in meiner Antwort glatt übersehen... Schande über mich ;-)

        nee, war alles richtig, was du zunaechst sagtest. denn das "-" muss nicht immer maskiert werden:

        'You may use \w , \W , \s, \S , \d , and \D  within character classes, but if you try to use them as endpoints of a range, that's not a range, the "-" is understood literally.' (perldoc perlre)

        prost
        seth

  3. n'abend,

    preg_match("/[1]{8,20}$/", $telnr)

    einmal benutzt du - als Indikator für einen Bereich (0-9) und einmal benutzt du das - als Zeichen. Woher soll PHP den Unterschied wissen? wenn du - als Zeichen angeben möchtest, dann musst du es maskieren (-).
    preg_match("/^[0-9+\-\s]{8,20}$/", $telnr);

    weiterhin schönen abend...

    --
    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
    sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|

    1. 0-9+-\s ↩︎

    1. n'abend,

      preg_match("/^[0-9+\-\s]{8,20}$/", $telnr);

      huch... da hab ich doch glatt das + vergessen, das muss natürlich auch maskiert werden.
      preg_match("/^[0-9\+\-\s]{8,20}$/", $telnr);

      weiterhin schönen abend...

      --
      Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
      sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
      1. gudn tach

        huch... da hab ich doch glatt das + vergessen, das muss natürlich auch maskiert werden.

        nein, nicht in zeichenklassen; hat Skeeve mittlerweile gesagt.

        und zum minus habe ich dort was geschrieben.

        prost
        seth

  4. gudn tach!

    das ist mein versuch, ich verstehs aber nicht warum das nicht funzt
    preg_match("/[1]{8,20}$/", $telnr)

    bevor du dir die muehe machst, das genauer zu beschreiben, hilft dir evtl. ein blick ins archiv.

    prost
    seth


    1. 0-9+-\s ↩︎