Regex Sammlung
In diesem Artikel werden verschiedenste Reguläre Ausdrücke (engl. Regular expression), nach Themenschwerpunkten getrennt, aufgelistet. Reguläre Ausdrücke sind ein wichtiges Mittel um z.B. Benutzereingaben zu prüfen oder Daten zu entschärfen bzw. zu korrigieren/ändern.
Reguläre Ausdrücke Buchstaben und Ziffern
In diesem Teil werden Reguläre Ausdrücke vorgestellt die Buchstaben und Ziffernfolgen verarbeiten oder prüfen.
1. Beispiel, alles was keine Buchstaben von A-Z sind entfernen
Möchten Sie aus einer Eingabe alles entfernen was keine Buchstaben von A-Z sind notieren Sie so, übrig bleibt hier nichts weil keine Großbuchstaben enthalten sind.
$eingabe = 'x5tf'; // nur Zahlen erlauben $wert = preg_replace('/[^A-Z]/', '', $eingabe); echo $wert == '' ? 'keine Daten' : $wert; // Ausgabe = keine Daten
Wenn Sie den Regex sowohl auf a-z und A-Z anwenden wollen, brauchen Sie dem Modifikator i. Damit passt der Regex sowohl auf groß- als auch auf kleingeschriebene Buchstaben. Übrig bleibt hier xtf.
$eingabe = 'x5tf'; // nur Zahlen erlauben $wert = preg_replace('/[^A-Z]/i', '', $eingabe); echo $wert == '' ? 'keine Daten' : $wert; // Ausgabe = xtf
2. Ersetzen von Umlauten durch ae, ue, oe und Leerzeichen mit Unterstrich
Dieses Beispiel zeigt wie man in Arrays vorgegebene Zeichen umwandelt. Eine solche Umwandlung kann z.B, dann nötig werden wenn man Dateien anlegt deren Dateiname aus Benutzereingaben stammt. Allerdings sollten dann auch unbedingt alle anderen kritischen Zeichen entfernt oder ersetzt werden.
Das \s+ im Regex bewirkt, das auch mehrere Leerzeichen hinereinander, nur mit einem Unterstrich ersetzt werden.
$eingabe = 'Änderungen am Ölstand müssen überwacht werden'; $suchen = array('/Ä/','/Ö/','/Ü/','/ä/','/ö/','/ü/', '/\s+/'); $ersetzen = array('Ae','Oe','Ue','ae','oe','ue', '_'); $wert = preg_replace($suchen, $ersetzen, $eingabe); echo $wert; // Ergebnis: // Aenderungen_am_Oelstand_muessen_ueberwacht_werden
3. Testen einer Eingabe auf korrekte Schreibweise
Manchmal ist es nötig Eingaben so zu prüfen das gewisse Konventionen eingehalten werden, z.B. wenn die Eingabe später weiterverarbeitet wird, die Routine aber Zeichen eines bestimmten Musters erwartet. Dieses Beispiel beschreibt eine Überprüfung von Smieliedaten wie sie oft in Foren oder Gästebüchern verwendet werden.
Diese sollen mit einem Doppelpunkt beginnen und enden, es soll danach mindestens ein Buchstabe oder Ziffer folgen, in der mitte sind Zeichen von 0-9, a-z und der Unterstrich erlaubt, vor dem Doppelpunkt am ende soll wieder mindestens eine Ziffer oder Buchstabe stehen
$eingabe = ':code_fuer_smilie:'; if (preg_match("/^:[0-9a-z]{1,}[0-9a-z_]+[0-9a-z]{1,}:$/i",$eingabe)){ echo "Alles in Ordnung das Smilie $eingabe kann gespeichert werden!"; } else { echo "Ein Fehler beim Smiliecode ist aufgetreten.!"; }
Gültige Werte wären hier:
:smilie:
:oh_oh:
:smilie_mit_schild:
Ungültige Werte sind:
_Smilie_
:_ohoh_:
:smilie-mit-schild:
Erläuterungen zum Regexaufbau:
Der Regex testet ob die Eingabe mit Doppelpunkt beginnt ^, danach mindestens eine Ziffer oder Buchstabe folgt ^:[0-9a-z]{1,}. Die nächste Zeichenklasse erlaubt Ziffern und Buchstaben sowie den Unterstrich in beliebiger Länge +, am ende muss wieder mindestens eine Ziffer oder Buchstabe stehen, gefolgt vom Doppelpunkt [0-9a-z]{1,}:. Es dürfen Groß und Kleinbuchstaben verwendet werden, angezeigt durch den Modifikator i.
Anderes Beispiel
Sie möchten das vor einem Datei oder Datenbanktabellenname ein Prefix steht, dieser soll aus 4-8 Großbuchstaben bestehen, gefolgt vom Unterstrich und danach aus beliebigen Ziffern oder Kleinbuchstaben bestehen.
$eingabe = 'VORN_dateiname'; if (preg_match("/^[A-Z]{4,8}_[0-9a-z]+$/",$eingabe)){ echo "Alles in Ordnung, $eingabe kann gespeichert werden!"; } else { echo "Fehler bei der Eingabe festgestellt!"; }
Wollen Sie die Zeichen nach dem Prefix auf 2-30 Zeichen begrenzen, ersetzen Sie das + mit {2,30}.
Weitere Informationen
- Metazeichen, Quantifikatoren und Zeichenklassensymbole
- Reguläre Ausdrücke Ziffern
- Reguläre Ausdrücke Buchstaben und Ziffern
- Testen eines Datums mittels Regex Neu
- Regex zum auffinden von URLs in Daten Neu
Keine Kommentare vorhanden