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);
}