seth_not@home: reguläre Ausdrücke

Beitrag lesen

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 ↩︎