Ich habe einige Regex, die eingehenden Passwörter für Komplexitätsanforderungen überprüfen. Aber es ist nicht robust genug für meine Bedürfnisse.Passwort Komplexität Regex mit Nummer oder Sonderzeichen
((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20})
Es stellt sicher, dass ein Passwort Mindestlänge erfüllt, enthält Zeichen von beiden Fällen und enthält eine Reihe.
Allerdings muss ich dies ändern, so dass es eine Nummer und/oder ein erlaubtes Sonderzeichen enthalten kann. Ich habe sogar eine Liste von erlaubten Sonderzeichen bekommen.
Ich habe zwei Probleme, Abgrenzung der Sonderzeichen und machen die erste Bedingung tun und/oder für die Zahl oder spezielle übereinstimmen.
Ich würde wirklich Ratschläge von einem der Regex Götter rund um diese Teile zu schätzen wissen.
Die erlaubten Sonderzeichen sind: @%+\/'!#$^?:.(){}[]~-_
Ohne ein Beispiel ist es ein wenig unklar. Probieren Sie ['@^(? =. * [\ D @% +/'! # $ ^?:.() {} [\] ~ _-]) (? =. * [Az]) (? = . * [AZ]). {8,20} $ "'] (http://regexstorm.net/tester?p=%5e (% 3f% 3d. *% 5b% 5cd% 40% 25% 2b% 2f % 27!% 23% 24% 5e% 3f% 3a.()% 7b% 7d% 5b% 5c% 5d% 7e _-% 5d) (% 3f% 3d. *% 5ba-z% 5d) (% 3f% 3d. *% 5bA-Z% 5d).% 7b8% 2c20% 7d% 24 & i = Text123% 2fA). Ich verstehe "und/oder" als "oder" in Regex. BTW, ohne '$' oder '\ z' hast du die Länge nicht wirklich eingeschränkt. –
Gibt es einen besonderen Grund, warum Sie die maximale Länge eines Passworts begrenzen? Normalerweise würde das als ein bisschen No-No betrachtet werden. – Phylogenesis
Password Stärke Anforderungen dieser Art sind nicht klug, und die Einstellung einer maximalen Länge ist lächerlich (wenn Sie dies tun müssen, schlägt es vor, dass Sie tun Hashing falsch). Siehe https://xkcd.com/936/ und https://crackstation.net/hashing-security.htm –