Was bedeutet diese Regex?
JanSchedt
- sonstiges
0 molily0 MudGuard0 molily0 Tabellenkalk0 MudGuard0 Tabellenkalk0 MudGuard
0 Auge
0 Jonny 5
Hallo!
In einem alten Programmcode, den ich bearbeiten muss, finde ich folgenden Regex und kann mir diese nicht erklären.
[1]*(?=[A-Za-z0-9]{8,})(?=[A-Za-z0-9]*[0-9])(?=[A-Za-z0-9]*[a-z])(?=[A-Za-z0-9]*[A-Z])[A-Za-z0-9]*$
Nach meinem Verständnis hätte man das doch auf "[2]{8,}$" verkürzen können, oder übersehe ich etwas?
Vielen Dank für eure Hilfe.
Hallo,
In einem alten Programmcode, den ich bearbeiten muss, finde ich folgenden Regex und kann mir diese nicht erklären.
[1]*(?=[A-Za-z0-9]{8,})(?=[A-Za-z0-9]*[0-9])(?=[A-Za-z0-9]*[a-z])(?=[A-Za-z0-9]*[A-Z])[A-Za-z0-9]*$
Nach meinem Verständnis hätte man das doch auf "[2]{8,}$" verkürzen können, oder übersehe ich etwas?
Lass mich raten: Hier wird ein Passwort auf seine Stärke geprüft, und die Anforderungen waren:
Das drückt obige RegExp auch korrekt aus, soweit ich das sehe, wenn auch ziemlich umständlich.
Ich würde hier
Besser wäre eine Bibliothek, die die Passwortstärke sinnvoll berechnet und die nicht nur ASCII zulässt, sondern auch ein »ä« als Kleinbuchstaben anerkennt.
Mathias
Hi,
[1]*(?=[A-Za-z0-9]{8,})(?=[A-Za-z0-9]*[0-9])(?=[A-Za-z0-9]*[a-z])(?=[A-Za-z0-9]*[A-Z])[A-Za-z0-9]*$
- Stringanfang
- Beliebig viele Wortzeichen (man könnte auch \w schreiben)
- Lookahead: 8 oder mehr Wortzeichen gefolgt von einer Ziffer
da mischst Du 2 der vielen Lookaheads.
der 1. Lookahead: mindestens 8 Wortzeichen
der 2. Lookahead: beliebig viele Wortzeichen gefolgt von einer Ziffer
- Lookahead: Beliebig viele Wortzeichen gefolgt von einem Kleinbuchstaben
- Lookahead: Beliebig viele Wortzeichen gefolgt von einem Großbuchstaben
- Beliebig viele Wortzeichen
- Stringende
Lass mich raten: Hier wird ein Passwort auf seine Stärke geprüft, und die Anforderungen waren:
- Mindestens acht Zeichen,
- mindestens ein Kleinbuchstabe,
- mindestens ein Großbuchstabe,
- mindestens eine Ziffer.
Das drückt obige RegExp auch korrekt aus, soweit ich das sehe, wenn auch ziemlich umständlich.
Ich würde hier
- Auf die Länge prüfen >= 8 &&
- Auf die RegExp [a-z] prüfen &&
- Auf die RegExp [A-Z] prüfen &&
- Auf die RegExp \d prüfen
Manche Leute meinen halt, daß es sinnvoller ist, einen sehr komplizierten Ausdruck zu benutzen als mehrere einfache ...
Besser wäre eine Bibliothek, die die Passwortstärke sinnvoll berechnet und die nicht nur ASCII zulässt, sondern auch ein »ä« als Kleinbuchstaben anerkennt.
und auch Satzzeichen zuläßt.
Damit man Merksätze zu Paßwörtern verwenden kann, z.B.
Dieses war der 1. Streich, und der 2. folgt sogleich! ⇒ Paßwort: Dwd1S,ud2.fs!
cu,
Andreas
A-Za-z0-9 ↩︎
Hallo,
da mischst Du 2 der vielen Lookaheads.
Ja, die RegExp hat mich erfolgreich getrollt…
… und auch Satzzeichen zuläßt.
Damit man Merksätze zu Paßwörtern verwenden kann, z.B.
Dieses war der 1. Streich, und der 2. folgt sogleich! ⇒ Paßwort: Dwd1S,ud2.fs!
Da gefällt mir die Langversion viel besser. Passphrases sind sicherer und genauso schnell zu tippen. :)
Mathias
Hallo,
z.B.
Dieses war der 1. Streich, und der 2. folgt sogleich! ⇒ Paßwort: Dwd1S,ud2.fs!
Access denied!
Bitte prüfen Sie die Anzahl der Punkte...
Gruß
Kalk
Hi,
Dieses war der 1. Streich, und der 2. folgt sogleich! ⇒ Paßwort: Dwd1S,ud2.fs!
Access denied!
Access Granted!
Bitte prüfen Sie die Anzahl der Punkte...
Du vergißt, daß grundsätzlich der erste Punkt weggelassen werden muß! ;-)
cu,
Andreas
Hallo,
Du vergißt, daß grundsätzlich der erste Punkt weggelassen werden muß! ;-)
Und bei einem Doppelpunkt, welcher ist da der erste und wie lasse ich ihn weg? ;-o
Gruß
Kalk
Hi,
Du vergißt, daß grundsätzlich der erste Punkt weggelassen werden muß! ;-)
Und bei einem Doppelpunkt, welcher ist da der erste und wie lasse ich ihn weg?
Stell Dich doch nicht so an, ist doch ganz einfach:
Bei Leserichtung von links nach rechts und (zeilenweise) oben nach unten den oberen Punkt weglassen, also "." statt ":" nehmen.
Bei umgekehrter Leserichtung (zeilenweise unten nach oben) selbstverständlich den unteren weglassen. Und statt ":" dann "·" nehmen.
cu,
Andreas
Hallo
Dieses war der 1. Streich, und der 2. folgt sogleich! ⇒ Paßwort: Dwd1S,ud2.fs!
Access denied!
Access Granted!
Bitte prüfen Sie die Anzahl der Punkte...
Du vergißt, daß grundsätzlich der erste Punkt weggelassen werden muß! ;-)
Aber nur am 12. und 27. des Monats und nur, wenn diese Tage auf einen Montag oder einen Samstag fallen und nur, wenn diese Tage auf abnehmenden Halbmond treffen. :-)
Tschö, Auge
Hallo Jan!
[1]*(?=[A-Za-z0-9]{8,})(?=[A-Za-z0-9]*[0-9])(?=[A-Za-z0-9]*[a-z])(?=[A-Za-z0-9]*[A-Z])[A-Za-z0-9]*$
Nach meinem Verständnis hätte man das doch auf "[2]{8,}$" verkürzen können, oder übersehe ich etwas?
Nach meinem auch. Und am Start ^
die lookaheads jeweils 1x ausführen können:
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9]{8,}$
# | muss eine Ziffer enthalten
# | muss einen Kleinbuchstaben enthalten
# | muss einen Großbuchstaben enthalten
# | darf nur aus [A-Za-z0-9] bestehen (mindestens 8)
Duch die Verwendung von shorthands könnte man die Länge des Suchmusters noch weiter reduzieren:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[^\W_]{8,}$
lG, Jonny 5