Problem mit preg_match

Sasser

Erfahrenes Mitglied
Hallo!

Ich nutze folgende Abfrage:

PHP:
if (preg_match ( "/^[\a-z\A-Z\ä\ö\ü\Ä\Ö\Ü\ß\&\.\ ]{1,30}$/", $firstname ) == false) {
echo "Falsch";
}

Jedoch kann ich auch Sonderzeichen usw. eintragen, ohne dass "Falsch" ausgegeben wird.
 
Zuletzt bearbeitet:
Warum setzt du Backslashes vor die Characters? Ich denke mal, das ist dein Problem. Lass die doch mal weg. Desweiteren macht die Prüfung auf zwischen Anfang und Ende wenig Sinn. Außerdem würde ich die Negierung von preg_match heranziehen und mein Suchmuster so aufbauen:

PHP:
if (preg_match ( "/[^a-zA-ZäöüÄÖÜß&\.\ ]/", $firstname )) {
  echo "Falsch";
}
 
Hallo, hab es inzwischen folgedermaßen gelöst:

PHP:
if (preg_match ( "/^[a-zA-Z\ä\ö\ü\Ä\Ö\Ü\ß\&\-\.\ ]{1,15}$/", $firstname ) == false) {
echo "Falsch";
}

Funktioniert auch wunderbar. Kann man das so belassen oder sollte man daran noch etwas abändern?

Möchte gern immer dazulernen und lasse mich auch gern belehren ;)
 
Die Regexp von saftmeister ist logischer und in diesem Fall auch die richtigere Lösung für dein Problem.
 
Zurück