Regular Expression Problem

Loveboat

Erfahrenes Mitglied
Hallo Leute,

hänge hier im Moment bei ner regex Sache fest und verzweifle. Hoffe, oder ich weiß, dass hier jemand ist und mir sagt was ich falsch mache.

Also mein PHP Code:

PHP:
if (eregi("^([0-9a-z]){8,9}$", $_REQUEST["username"]))

Mein username soll nur aus den Zeichen 0-9 und a-z bestehen. Die minimale Anzahl der Zeichen soll 6 und die maximale 20 sein.

Mein Beispiel funktioniert zur Überprüfung des String auf 8 oder 9 Zeichen, aber wie bekomme ich es hin dass es auf 6-20 Zeichen prüft?

Danke im voraus an alle. :-)

Gruß loveboat
 
PHP:
if (eregi("^([0-9a-z]){6,20}$", $_REQUEST["username"]) && strlen($_REQUEST["username"]) <= 20)
 
Zuletzt bearbeitet:
Hi hasta_jesaja,

warum sollte der Zusatz

PHP:
&& strlen($_REQUEST["username"]) <= 20

notwendig sein?

Gruß
joschi
 
Die zusätzliche Prüfung der Länge der Zeichenkette ist unnötig, da der reguläre Ausdruck dies bereits tut, der übrigens auch noch etwas vereinfacht werden kann:
Code:
^[0-9a-z]{6,20}$
 
probierts aus:
PHP:
$_REQUEST['username'] = "Benutzernamemitmehrals20zeichen";

if (eregi("^([0-9a-z]){6,20}$", $_REQUEST["username"])){
    echo 'Name zu lang oder nicht erlaubte Zeichen';
} else {
    echo 'Name valide!';
}

Ausgabe:
Code:
Name valide!

obwohl er es nicht sein sollte.
 
Zuletzt bearbeitet:
Du scheinst da etwas misszuverstehen. Es war ein reguläre Ausdruck gesucht, mit dem alle Zeichenketten der Länge zwischen 6 und 20 Zeichen der Zeichenmengen [0-9a-z] gefunden werden. Das heißt, die Prüfung soll true liefern, falls diese Eigenschaften erfüllt sind, und sonst false. Bei deinem Beispiel geschieht jedoch genau das Gegenteilige.
 
Meinetwegen ist der if-Zweig der gute, aber da Loveboat sein Beispiel schon verneint hat, bin ich mal von der Richtung ausgegangen. Wo sind denn eure Lösungen? Na?

Du scheinst da etwas misszuverstehen. Es war ein reguläre Ausdruck gesucht, mit dem alle Zeichenketten der Länge zwischen 6 und 20 Zeichen der Zeichenmengen [0-9a-z] gefunden werden. Das heißt, die Prüfung soll true liefern, falls diese Eigenschaften erfüllt sind, und sonst false. Bei deinem Beispiel geschieht jedoch genau das Gegenteilige.
Wo wird das gefragt?
 
Zuletzt bearbeitet:
Zurück