gondor: preg_match - Frage

Hallo,

ich habe folgenden Ausdruck, in dem ich 'nur' folgende Zeichen zulassen möchte (a-z, A-Z, 0-9, _ und -). Leider arbeitet der Ausdruck nicht so, wie ich mir das vorgestellt habe, da bei einer Zeichenkette von "..." der Rückgabewert 1 ist und damit zugelassen ist.

preg_match(/[1]+$/, "...")

Ist der Ausdruck falsch angesetzt?

Danke für Hilfe,

gondor(..)


  1. a-z\A-Z\0-9\_- ↩︎

  1. Hi,

    preg_match(/[1]+$/, "...")
    Ist der Ausdruck falsch angesetzt?

    aber hallo. Hast Du eine Vorstellung davon, was \0 für ein Zeichen ist?

    Bitte nicht willkürlich irgendwelche Zeichen irgendwo einfügen, nur weil sie in irgend einem Zusammenhang vielleicht mal ein Problem gelöst haben.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes

    1. a-z\A-Z\0-9\_- ↩︎

  2. Hi gondor!

    preg_match(/[1]+$/, "...")

    Der erst Parameter muss ein String sein.

    Ist der Ausdruck falsch angesetzt?

    Entferne die Backslashes.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)

    1. a-z\A-Z\0-9\_- ↩︎

  3. /[1]+[a-zA-Z0-9\_-]*$/ sollte eher zum Zielführen. In einem Raum darfst du nicht die einzelnen Leerräume escapen. Für \0 erhältst du nämlich das erste Zeichen deiner Zeichentabelle und das erste Zeichen bis Zeichen 0 sollte dann schon so ziemlich alles beihnalten. Daher auch der true-Wert.


    1. a-zA-Z0-9\_- ↩︎

    1. Hi Rafael!

      /[1]+[a-zA-Z0-9\_-]*$/ sollte eher zum Zielführen.

      Wieso das Doppelgemoppel?

      Tut es nicht auch ein einfaches /[a-zA-Z0-9\_-/ ?
      Wenn nicht, warum nicht?

      /[2]+[a-zA-Z0-9\_-]*$/
      Am Anfang dürfen nur die Zeichen a-z, A-Z, 0-9, - und _ vorkommen. Davon mindestens 1.
      Da der Ausdruck gierig ist, matcht er aber sowieso alles, d.h. die nachfolgende Regel kommt gar nicht mehr zum Schuss, es sei denn, es kommt ein unerlaubtes Zeichen. Aber dann soll ja sowieso nicht gematcht werden.

      Ich bitte um Korrektur. :-)

      Danke, H☼psel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)

      1. a-zA-Z0-9\_- ↩︎

      2. a-zA-Z0-9\_- ↩︎

      1. Stimmt auch nur mit +. Nur eine verbliebene schleche Angewohnheit von mir weil ich das irgenwann mal falsch gelernt hatte... nevermind.

        1. Hi Rafael!

          Stimmt auch nur mit +. Nur eine verbliebene schleche Angewohnheit von mir weil ich das irgenwann mal falsch gelernt hatte... nevermind.

          Danke für deine Antwort.

          Schönen Tag noch,
          H☼psel

          --
          "It's amazing I won. I was running against peace, prosperity, and incumbency."
          George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
          Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
      2. Außerdem muss der Unterstrich auch nicht escaped werden. Nur mal so am Rande ;)

        1. echo $begrüßung;

          Außerdem muss der Unterstrich auch nicht escaped werden. Nur mal so am Rande ;)

          Innerhalb eine Zeichenklasse [ ] muss so gut wie gar nichts maskiert werden. Wenn das - am Anfang oder Ende und nicht zwischen zwei Zeichen steht braucht es ebenfall keine Maskierung.

          echo "$verabschiedung $name";