MQL-Programmiererin Anja Vogel

Reguläre Ausdrücke

Zend Certified Engineer

Dipl.-Ing. Anja Vogel

Regex bzw. Reguläre Ausdrücke


^            Text- bzw. Zeilenanfang (auch "nicht")
$            Text- bzw. Zeilenende

.            ein beliebiges Zeichen (ohne Zeilenende)
.*           mehrere beliebige Zeichen
a*           null oder mehrfach a
a?           null oder einmal a
a+           ein oder mehrmals a

^$           ein Absatz
^.           das erste Zeichen eines Absatzes

[0-9]       eine Zahl (ein Zeichen) \d
[a-zA-Z]    ein Buchstabe, de: [a-zA-ZäöüÄÖÜß]
[a-zA-Z0-9] eine Zahl oder ein Buchstabe, de: [a-zA-ZäöüÄÖÜß0-9]

[abc]        a, b oder c (ein Zeichen)
[a-c]        a, b oder c (ein Zeichen)
[^abc]       ein anderes Zeichen, als a, b oder c
[^a-c]       ein anderes Zeichen, als a, b oder c

(dies|das)   "dies" oder "das"

a{2}         zweimal a
a{2,}        mindestens zweimal a
a{2,4}       zwei bis viermal a

\.           ein Punkt
\-           ein Bindestrich
\?           ein Fragezeichen
\/           ein Schrägstrich
\\           ein Backslash

\s           ein Leerzeichen
\S           ein Zeichen, dass kein Leerzeichen ist
\d           eine Zahl
\D           keine Zahl
\w           ein Buchstabe, eine Zahl oder ein Unterstrich
\W           ein Zeichen, das weder ein Buchstabe, eine Zahl oder ein Unterstrich ist
\b           eine Wortgrenze z.B. Wortanfang oder -ende
\B           keine Wortgrenze
\z           Zeilenumbruchzeichen
\Z           letztes Zeichen (vor Zeilenumbruch)

\t           ein Tabulator
\n           Zeilenumbruchzeichen (LF) Unix
\r           Zeilenumbruchzeichen (CR) Mac
\r\n         Zeilenumbruchzeichen (CR LF) Windows
            

Regex Optionen


i       case insensitive: findet Groß- und Kleinbuchstaben
m       multiline: Text wird pro Zeile untersucht, wirkt sich auf ^ und $ aus
s       dotall: der Punkt findet auch Zeichen wie \n oder \r (\r\n benötigt ..)
U       ungreedy: Treffer bestehen aus so wenig Zeichen, wie möglich
            

Beispiel Postleitzahl

Fünf Stellen von 0 bis 9:

if (preg_match('#^[0-9]{5}$#', $plz, $treffer)) {
    print_r($treffer);
}

Beispiel IP Adresse

Vier Ziffernblöcken aus Zahlen von von 0 bis 255, jeweils getrennt durch einen Punkt:

$p = '#^((\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])$#';
if (preg_match($p, $ip, $treffer)) {
    print_r($treffer);
}