Passworteingabe über Expression bestimmen

Kai-Behncke

Erfahrenes Mitglied
Hallo liebe Leute,

ich versuche schon seit geraumer Zeit eine reguläre Expression zu finden, welche bestimmt, dass ein Passwort

* aus 8-12 Zeichen bestehen muss
* aus Buchstaben, mindestens einer Zahl und mindestens einem Sonderzeichen
(_,-,?,!)

Ich nutze dieses:

Code:
!preg_match("/^[0-9,a-z,A-Z,.,_,-,?,!]{8-12}$/",$_POST["input_user_login"]


aber das haut so nicht hin.
Optimal wäre es noch, wenn man bestimmen könnte, dass sowohl Groß- als auch Kleinbuchstaben zwingend nötig sind.

Könnte mir da bitte jemand helfen
 
Da du ja keine Reihenfolge des Auftretens dieser Zeichengruppen festlegen möchtest, brauchst du vier unabhängige Prüfungen:
PHP:
preg_match('/.{8,12}/', $str) && preg_match('/[^a-zA-Z]/', $str) && preg_match('/[0-9]/', $str) && preg_match('/[[:punct:]]/', $str)
 
Absolut spitze 1000 Dank, damit funktioniert es reibungslos. :-)

Nun noch eine kleine Frage:

Wenn ich nun möchte dass eine Fehlermeldung ausgegeben wird wenn
in einem Namen nicht ausschließlich a-z bzw. A-Z vorkommen, welchen Weg sollte ich da gehen?

Im Augenblick habe ich

Code:
!preg_match("/^[a-z,A-Z]/",$_POST["input_user_vorname"]))


...aber das scheint nicht korrekt zu sein, weiß jemand die Antwort?

Nochmals vielen Dank, Kai
 
Du solltest nicht zu viele Einschränkungen setzen. Dörte, Bärbel, Jürgen oder André wären sonst nicht erfreut.


PS: Interessanter regulärer Ausdruck, Loomes.
 
Danke nochmals für die Hilfe ;)

aber leider scheint es so nicht zu funktionieren.

Ich nutze nun also:

Code:
if ($_POST["input_user_vorname"]=='' OR (!preg_match("/^[a-zA-Z]$/",$_POST["input_user_vorname"])))


....und die Bedingung ist immer wahr, egal ob ich "kalle", "kalle3", kalle!?:" eingebe, hmmmm, da muss ich noch mal weiteprobieren.
Die Bedingung soll ja nur dann wahr sein wenn im Namen eine Zahl oder ein Sonderzeichen auftaucht.
 
Dann nimm doch den von Gumbo. Dein Versuch ist natürlich immer wahr, weil du prüfst ob ein Buchstaben vorkommt (a-zA-Z) und das ist in allen deinen Beispielen der Fall.
 
Hallo allerseits, habs jetzt gefunden:


Code:
!preg_match("#^[a-z,A-Z]+$#",$_POST["input_user_vorname"]


Wenn nun ein Sonderzeichen, eine Zahl oder so eingegeben wird, dann erscheint die Fehlelmeldung.
Danke nochmals für die Hilfe.
 
Zurück