Skip to main content

Alles für die Homepage... Scripte, Templates, Workshops und Support

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 Ziffern

Nun zur Praxis, in diesem Teil geht es um erste, sehr einfache Reguläre Ausdrücke zum Thema Ziffern.

Ziffern sind ein häufiges Anwendungsgebiet, viele Datensätze aus Datenbanken werden z.B. über Ziffern angesprochen. Aber auch wenn Angaben zu Jahreszahlen oder Tages/Monatsanzahlen eingegeben und geprüft werden müssen hilft ein Regex bei der Validierung.

Generell muss jede Eingabe von außen geprüft und entschärft werden, aber auch interne Ergebnisse sind nötigenfalls zu prüfen. Eine Null 0 oder ein leerer Wert sind, nicht dasselbe! Wenn Sie mit etwas rechnen wollen brauchen Sie eine Ziffer, ein leerer Wert führt dabei zu einem Fehler oder unerwarteten Ergebnissen. Eine korrekte Eingabevalidierung nimmt auch potentiellen Angreifern die Möglichkeit Schadcode einzuschleusen.

Bitte beachten!

preg_match und preg_match_all durchsuchen dabei eine Zeichenkette nach dem Suchmuster, preg_replace führt hingegen Ersetzungen aus. Die Angaben die im folgenden mit $eingabe bezeichnet werden sind im richtigen Script POST, GET, REQUEST oder COOKIE Daten.

1. Beispiel, alles was keine Ziffen sind entfernen

CODE:
$eingabe = 'x5tf';

// nur Zahlen erlauben
$wert = preg_replace('/[^0-9]/', '', $eingabe);

echo $wert; // Ausgabe = 5

oder

CODE:
$eingabe = 'x5tf';

// nur Zahlen erlauben
$wert = preg_replace('/\D/', '', $eingabe);

echo $wert; // Ausgabe = 5

Übrig bleibt hier jedesmal die Zahl 5, alle anderen Zeichen werden ausgefiltert.

Muss die Eingabe aus Ziffern bestehen, das Ergebnis ist aber leer ist weil gar keine Ziffer vorkommt – so setzt man einen möglichst passenden Defaultwert. Welcher das ist ist immer abhängig von den Scripterfordernissen.

Beispiel:

CODE:
$eingabe = 'xtf';

// nur Zahlen erlauben
$wert = preg_replace('/[^0-9]/', '', $eingabe);
// Wenn $wert leer dann 0 ansonsten $wert
$wert = $wert == '' ? 0 : $wert;

echo $wert; // Ausgabe == 0 

2. Beispiel, auf Ziffern prüfen

Hier wird geprüft ob die Eingabe von Stringanfang ^ bis Ende $ nur aus Ziffern besteht

 

CODE:
$eingabe = 150;

// nur Zahlen erlauben
if (preg_match('/^[0-9]+$/', $eingabe)) { 
echo "OK, $eingabe passt";
} else {
echo "Ooops Fehler, $eingabe passt nicht";
}

Hier wird geprüft ob die Eingabe aus mindestens 3 aber höchstens 5 Ziffern besteht

CODE:
$eingabe = 1588;

// nur Zahlen erlauben
if (preg_match('/^[0-9]{3,5}$/', $eingabe)) { 
echo "OK, $eingabe passt";
} else {
echo "Ooops Fehler, $eingabe passt nicht, 
muss zwischen 3 und 5 Ziffern beinhalten";
}

Möchte man nur 2 oder 4 stellige Zahlen erlauben kann man den Regex mit einer Alternative | notieren. Hier können etweder zahlen von 10 – 99 oder von 1000 – 9999 eingegeben werden.

CODE:
$eingabe = 15999;

// nur Zahlen erlauben
if (preg_match('/^([0-9]{2}|[0-9]{4})$/', $eingabe)) { 
echo "OK, $eingabe passt";
} else {
echo "Ooops Fehler, $eingabe passt nicht, 
muss entweder 2 oder 4 Ziffern beinhalten";
}

Möchte man einen Zahlenbereich prüfen, so dass z.B. die Zahl 4 Stellen haben muss und mit 19 oder 20 beginnt, notiert man so:

CODE:
$eingabe = 2064;

// nur Zahlen erlauben
if (preg_match('/^(19|20)\d{2}$/', $eingabe)) { 
echo "OK, $eingabe passt";
} else {
echo "Ooops Fehler, $eingabe passt nicht, Zahl muss mit 
19 oder 20 beginen und darf max 4 Ziffern lang sein";
}

Hier wird der Bereich noch präziser bezeichnet, entweder von 1900 – 1999 oder 2000 – 2008

CODE:
$eingabe = 2005;

// nur Zahlen erlauben
if (preg_match('/^(19\d{2}|200[0-8]{1})$/', $eingabe)) { 
echo "OK, $eingabe passt";
} else {
echo "Ooops Fehler, $eingabe passt nicht, Zahl muss entweder 
von 1900 - 1999 gehen oder von 2000 bis max. 2008";
}

Weitere Informationen


Ähnliche Beiträge



Keine Kommentare vorhanden


Du hast eine Frage oder eine Meinung zum Artikel? Teile sie mit uns!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *