Hi,
ich entwickle gerade ein System in Java um Passwörter auf verschiedene Dinge, wie Struktur, Blacklist, History, usw. zu überprüfen. Dabei muss ich einige Strukturregeln in Regulären Ausdrücken aufstellen.
Die Regex müssen immer matchen, damit kein Fehler kommt.
(Dies darf nicht verändert werden)
Ich verwende Java 1.5 mit java.util.regex.
Nun zu meinem eigentlichen Problem:
Ich möchte die minimal und maximal erlaubte Anzahl von beliebigen Zeichen aus einer bestimmten Zeichenklasse festlegen. (Ob es sicherheitstechnisch Sinn macht, spielt keine Rolle.)
Beispiel: Das Passwort muss zwischen 2 und 5 Zahlen enthalten.
D.h. der Regex darf nur matchen, wenn die Anzahl der enthaltenen Zahlen nicht kleiner als 2 und nicht größer als 5 ist. Das "nicht größer" ist mein Hauptproblem.
war mein letzter Versuch. Meine Denkweise ist wahrscheinlicht total falsch, wieso es so nicht funktioniert, verstehe ich. Ich hab auch schon Versuche mit lookarounds gemacht, war dabei aber auch nicht viel erfolgreicher.
Ein anderes Problem bekomme ich, wenn ich die minimale und maximale Anzahl von beliebigen Zeichen einer Zeichenklasse in einer Reihe festlegen will.
Also z.B. minimal 1 und maximal 4 aus [a-z].
Mein Regex dazu:
Ein Passwort wie "34erf43egergsegsre" kommt durch, weil das erste schon matcht. Ich muss irgendwie das gesammte Passwort betrachten können.
Ich hab jetzt schon einige Freunde/Kollegen um Hilfe gebeten und keiner konnte mir bisher richtig helfen, ihr seid meine letzte Hoffnung
Viele Grüße
roderick
ich entwickle gerade ein System in Java um Passwörter auf verschiedene Dinge, wie Struktur, Blacklist, History, usw. zu überprüfen. Dabei muss ich einige Strukturregeln in Regulären Ausdrücken aufstellen.
Die Regex müssen immer matchen, damit kein Fehler kommt.
Code:
if (!matcher.find()) {
fehler ausgeben
}
Ich verwende Java 1.5 mit java.util.regex.
Nun zu meinem eigentlichen Problem:
Ich möchte die minimal und maximal erlaubte Anzahl von beliebigen Zeichen aus einer bestimmten Zeichenklasse festlegen. (Ob es sicherheitstechnisch Sinn macht, spielt keine Rolle.)
Beispiel: Das Passwort muss zwischen 2 und 5 Zahlen enthalten.
D.h. der Regex darf nur matchen, wenn die Anzahl der enthaltenen Zahlen nicht kleiner als 2 und nicht größer als 5 ist. Das "nicht größer" ist mein Hauptproblem.
Code:
(.*[0-9].*){2,5}
Ein anderes Problem bekomme ich, wenn ich die minimale und maximale Anzahl von beliebigen Zeichen einer Zeichenklasse in einer Reihe festlegen will.
Also z.B. minimal 1 und maximal 4 aus [a-z].
Mein Regex dazu:
Code:
[^a-z]*[a-z]{2,4}[^a-z]*
Ich hab jetzt schon einige Freunde/Kollegen um Hilfe gebeten und keiner konnte mir bisher richtig helfen, ihr seid meine letzte Hoffnung

Viele Grüße
roderick