Regex Profi gesucht ;-)

BastianW

Mitglied
Hallo zusammen,

ich bräuchte mal Hilfe von einem Profi der sich mit Regulären Ausdrücken auskennt... Und zwar möchte ich einen Schutz bei meinem Gästebuch einbauen, der verhindert das User da irgendwelche SQL Statments und der gleichen versuchen einzutragen. Dafür habe ich mir eine Klasse gebaut:

function validate($input)
{
if (preg_match("/[\.a-z0-9_-]+@([a-z0-9-]+\.)+[a-z]{2,6}$/i",$addr))
return(false);
}

Momentan Validiert die eine eMail Adresse. Ich möchte die aber nun soweit umbauen das die halt nur Zeichen von A-Z, Zahlen von 0-9 und einige Sonderzeichen wie =,+,-,$ zuläßt. Mehr auch nicht...

Allerdings komme ich mit Regulären Ausdrücken nicht klar. Stehe damit voll auf dem Kriegsfuss. Vielleicht kann mir da mal jemand helfen. Das währe echt grosse klasse.
 
Super... Das ist zwar nicht das was ich gesucht habe kann ich aber dennoch gut einbauen...

Ich möchte allerdings den usernamen z.b. lieber auf gewissen Zeichen validieren... momentan baue ich sowas


function validate($input)
{
if (preg_match("[a-zA-Z0-9_-$]i",$input))

return(false);
}

Aber wenn ich etwas mittels:

elseif (validate($_POST['name'])==true)
{
echo "Not a valid name";
}

Validieren möchte klappt es nicht... wo liegt das Problem?
 
Was möchtest du denn genau überprüfen? Dein RegExp hat z.B. keine Delimiter-Zeichen (dafür nimmt man üblickerweise / oder #), ausserdem gibst du nicht an, wie lange ein Username sein kann. Zudem sollte afaik der Bindestrich innerhalb von Zeichengruppen ([…]) nur am Ende oder aber mit einem \ maskiert auftreten, da er sonst als »von bis« interpretiert wird (in deinem Beispiel also von Unterstrich bis Dollar, was ja offensichtlich keinen Sinn macht).
 
Zuletzt bearbeitet:
Super, das hilft mir doch mal viel weiter...

Ich habe mit dem tip # zu verwenden folgendes gebaut:

#^[a-z0-9$-_]+$#i

Das klappt auch supergut. Kann es sein das preg_match ein Performancefresser ist? Ich validiere ca. 4 Felder und es dauert doch schon 2-3 secunden bis sich da was tut.
 
Zurück