Regex java passwort?

2 Antworten

dann lass uns mal "Inventur" machen...

  • am Anfang ein Großbuchstabe = ^[A_Z] (Umlaute lass ich mal außen vor, dann würde es kompliziert)
  • gefolgt von 3 Kleinbuchstaben = [a-z]{3} (wieder ohne Umlaute)
  • für das 5 Zeichen besteht keine Anforderung außer das es keine Ziffer sein darf (und wohl auch kein Leerzeichen?) = [^\d\s] (hier kannst Du weiter unerwünschte Zeichen ausschließen)
  • das 6 Zeichen muss die einzige Ziffer sein = \d
  • Damit wir auf mindestens 8 Zeichen kommen brauchen wir noch mindesten 2 beliebige Zeichen die weder Ziffer noch Leerzeichen sind = [^\d\s] {2,}$

damit haben wir unser Pattern zusammen:

^[A-Z][a-z]{3}[^\d\s]\d[^\d\s]{2,}$

Wenn Leerzeichenerlaubt sind siehts so aus:

^[A-Z][a-z]{3}\D\d\D{2,}$
!!! Nicht vergessen die Backslashes in Java zu verdoppeln !!!

test:

"Adfs@1_€'²__"  = true
"XopqS1blubb"   = true
"Xopq_1xx"      = true
"Xopq 1xx"      = false
"Xopq91blubb"   = false

Moin,

zwischen dem [A-Z][a-z]{3} kann noch etwas stehen, was keine Zahl ist, das fehlt im Regex.

Am Ende des Regex prüfst du nur auf [a-z A-z]. Da darf aber alles stehen, was keine Zahl ist.

/^[A-Z][a-z]{3}([^0-9]*){1}[0-9]([^0-9]*){2,}$/

So könnte man das auf die Schnelle formulieren, habs jetzt nicht getestet sondern nur aus dem Kopf geschrieben.

Tipp für das nächste Mal: Poste doch bitte Regex und Tests als Text, dann müssen wir, wenn wir dir helfen wollen, nicht mühsam alles abtippen.

Woher ich das weiß:Studium / Ausbildung – B.Sc. Informatik mit FR Software Engineering
Erzesel  13.12.2023, 21:25

([^0-9]*){1} das Sternchen (und damit die Gruppierung) ist zuviel des Guten

Damit erlaubst Du, dass die Gruppe Nichts enthalten kann . eine Gruppe die Nichts enthält repräsentiert Nichts, egal wie oft sie aufeinanderfolgt. Damit würde die einzige Ziffer auch an Position 5 möglich sein!

einmal alles außer Ziffer : [^0-9] oder \D

die Mengenangabe{1} ist quatsch...

2