Wurzelzwerg: reguläre Ausdrücke

Hallo allerseits,

mit regulären Ausdrücken kenne ich mich noch nicht so aus. Kann mir mal bitte jemand verraten, wie ich damit in PHP eine Prüfung einer Zeichenkette nach folgendem Schema machen kann:

Sind in der Zeichenkette Zeichen enthalten, die keine Ziffern, keine Groß- und Kleinbuchsteben und kein Unterstrich sind (also z.B. "ä" ist nicht erlaubt oder "&" oder "$" und sowas) ??

vielen Dank schonmal im Voraus

  1. Hi,

    Sind in der Zeichenkette Zeichen enthalten, die keine Ziffern, keine Groß- und Kleinbuchsteben und kein Unterstrich sind (also z.B. "ä" ist nicht erlaubt oder "&" oder "$" und sowas) ?

    Warum fragst Du dann nicht einfach nach Übereinstimmung mit Wortzeichen?
    #[1]+$#i bzw \w (Wortzeichen: Buchstabe, Ziffer, Unterstrich)

    Gruesse, Joachim

    --
    Am Ende wird alles gut.

    1. _a-z0-9 ↩︎

    1. gudn tach!

      Sind in der Zeichenkette Zeichen enthalten, die keine Ziffern, keine Groß- und Kleinbuchsteben und kein Unterstrich sind (also z.B. "ä" ist nicht erlaubt oder "&" oder "$" und sowas) ?

      Warum fragst Du dann nicht einfach nach Übereinstimmung mit Wortzeichen?
      #[1]+$#i bzw \w (Wortzeichen: Buchstabe, Ziffer, Unterstrich)

      vorsicht, denn \w ist boese:
      -------- begin of quote --------
      A "word" character is any letter or digit or the underscore character, that is, any character which can be part of a Perl "word". The definition of letters and digits is controlled by PCRE's character tables, and may vary if locale-specific matching is taking place. For example, in the "fr" (French) locale, some character codes greater than 128 are used for accented letters, and these are matched by \w"
      -------- end of quote --------
      quelle und gleichzeitig hilfreicher link betreffend der OP-frage: http://de3.php.net/manual/en/reference.pcre.pattern.syntax.php

      eine moegliche loesung ist:

        
      if(preg_match('/^[a-zA-Z0-9_]*$/', $str))  
        echo "umlaute und sowas stinken!";  
      else  
        echo "brav!";
      

      eine andere moegliche loesung ist die negation dieser bedingung, also so wie es der OP auch formulierte:

        
      if(preg_match('/[^a-zA-Z0-9_]/', $str))  
        echo "brav!";  
      else  
        echo "umlaute und sowas stinken!";
      

      prost
      seth


      1. _a-z0-9 ↩︎