8
votes

Regex pour la politique de mot de passe

J'ai besoin d'appliquer la stratégie de mot de passe suivante:

Au moins 9 caractères, avec au moins un caractère de chacun des 4 Cours de caractères (alphabétique inférieur et majuscule; numérique, symboles).

Des experts surgènes peuvent aider ici? (J'utilise un moteur Java Regex)

Pendant que nous y sommes, y a-t-il un outil en ligne qui peut générer une regex pour ces types de tâches?

Merci!


5 commentaires

Une bonne référence pour Regex est à Vogella.de/articles/javaregularexpressions/article.htmlLec a>. S'il vous plaît poster le reg Ex que vous avez déjà essayé


Dupliqué possible de Stackoverflow.com/Questtions/3387785/...


@Felixkling rien n'est faux avec ça, mais il y a tellement d'autres choses que je veux apprendre d'abord;)


Non! Cela a été répondu tant de fois à ce sujet, voir par ex. Stackoverflow.com/a/3466868/297323 rompre dans une fonction différente, où chacun effectue une seule chèque. Cette approche est la preuve future et surtout à maintenir.


Bon, appris ma leçon. Merci pour les liens, cela commencera à enquêter.


3 Réponses :


11
votes
(?=.{9,})(?=.*?[^\w\s])(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*
Note that this pattern doesn't include special utf chars like ö. I would not do this in one regex. I would split it and search for each thing, if you want to validate it.

3 commentaires

Si vous êtes dans la terre JavaScript et utilisez jQuery, je recommanderais Jquery Validation Plugin, voici un mot de passe fort Gist GIST. github.com/mrgcohen/9806928


@MC Si vous validez des données uniquement sur JS-côté d'une application, vous n'avez aucune sécurité du tout. La validation du serveur doit être effectuée indépendamment.


@ Dariusz a accepté, cependant, il est agréable d'avoir des choses que les choses se produisent aussi de la clientèle aussi, elles sont jolies :) - Si vous vouliez que vous puissiez essayer de sauvegarder et d'exécuter une validation sur le backend (à distance). Mais c'est agréable de valider avant qu'il ne frappe votre machine (si possible).



0
votes

J'utiliserais plusieurs regexp pour résoudre ce problème:

9 caractères - vous pouvez réégyter cela mais .Length ()> = 9 est beaucoup mieux meilleur! p>

pour les classes de caractères, vous devez utiliser un PR. Classe: P>

[a-z]+
[A-Z]+
[0-9]+
[£$%&{[...]+ //all the possible symbols you want to accept
or perhaps: 
[:punct:]+ // this depends on your programming language..
or like in the suggestion by @david-halter:
[^\w\s]+  // not alphanumeric or spaces


0 commentaires

6
votes

Voici comment je le ferais (en utilisant un lookahead positif): xxx pré>

exemple complet et test: p> xxx pré>

: STRUT> P>

aB99        : false
abcdefghijk : false
abcdefGHIJK : false
12345678910 : false
abcDEF12345 : false
abcDEF-2345 : true


0 commentaires