Zeichenbereiche angeben - Zeichenklassen

Mit Zeichenklassen kann bestimmt werden, welche Gruppen von Zeichen zugelassen oder auch verboten werden sollen. Zeichenklassen werden innerhalb von eckigen Klammern [ und ] notiert. Jedes Zeichen innerhalb der eckigen Klammern kann an dieser Stelle vorkommen bzw. nicht vorkommen.

Der Ausdruck #[abcdefgh]# legt fest, dass an dieser Stelle nur die Zeichen a, b, c, d, e, f, g und h erlaubt sind.

Zeichenklassen definieren, wie der Name schon verrät, Klassen (Bereiche) von Zeichen. Somit verlieren alle Metazeichen, außer dem Zirkumflex, dem Bindestrich und dem Backslash ihre Bedeutung, werden also als normales Zeichen interpretiert und müssen daher auch nicht maskiert werden.

Der Bindestrich in Zeichenklassen

Mit Hilfe des Bindestrichs - lassen sich innerhalb von Zeichenklassen Zeichenbereiche angeben. So läßt sich der obere Ausdruck auch als #[a-h]# schreiben.

Der Ausdruck #[A-Za-z]# steht für alle Klein- und Großbuchstaben von A-Z, #[0-9]# steht für alle Ziffern.

Zeichenklassen negieren

Innerhalb von Zeichenklassen hat das Accent Zirkumflex eine andere Bedeutung. Es negiert die angegebene Zeichenklasse, so daß die Zeichenklasse jetzt nur zutrifft, wenn die angegebenen Zeichen nicht vorkommen. Somit lassen sich also Gruppen von Zeichen ausschließen.

Die Zeichenklasse #[^xyz]# trifft also auf alle Zeichen außer x, y und z zu. Natürlich lassen sich auch ganze Bereiche von Zeichen ausschließen - so trifft dieser Reguläre Ausdruck #[^0-9]# auf alle Zeichen außer Ziffern zu, und eignet sich damit in Verbindung mit preg_replace wunderbar, um zum Beispiel unerwünschte Zeichen aus einer Telefonnummer zu entfernen.

Aber Achtung: Soll das Zirkumflex in seiner negierenden Bedeutung eingesetzt werden, muss es am Anfang der Zeichenklasse stehen. Ansonsten gilt es als ganz normales Zeichen, das an dieser Stelle auftreten darf. So trifft dieser Ausdruck #[^aeiou]# auf alle Zeichen außer den Vokalen zu, da das Zirkumflex am Anfang steht und somit die Zeichenklasse negiert, dieser Ausdruck jedoch #[ae^iou]# trifft nur auf die Vokale und das Zirkumflex als Zeichen zu. Diese Tatsache sollte beachtet werden, so dass es nicht zu unerwarteten Ergebnissen kommt.

Verwandte Themen
Kapitelnavigation