9
votes

Regex pour un mot de passe fort

J'ai les exigences de mot de passe suivantes:

1) devrait être de 6-15 caractères de longueur
2) devrait avoir au moins un caractère minuscule
3) devrait avoir au moins un caractère majuscule
4) devrait avoir au moins un numéro
5) devrait avoir au moins un personnage spécial de
6) ne devrait pas avoir d'espaces

Quelqu'un peut-il me suggérer une regex pour cette exigence?


6 commentaires

Limiter la longueur d'un mot de passe est rarement une bonne idée


Pourquoi doit-il être une regex? Ce serait plus lisible comme code ordinaire.


Mark - Il recherche probablement un REG-EX afin qu'il puisse être utilisé du client et du serveur dans un contrôle de validateur ASP.NET.


@Thekaido: Pourquoi est-ce une bonne idée?


@mark n'a pas dit que c'était une bonne idée. juste en supposant pourquoi il voulait utiliser un reg Ex. De plus, le fournisseur d'adhésion intégré .NET a un paramètre Web.Config pour le mot de passe Regex qu'il peut appliquer, afin que cela puisse une autre raison.


@Tomhastjarjanto Selon votre avis, je pense que la réponse doit être modifiée pour ^ (? =. * [AZ]) (? =. * [0-9]) (? =. * \ W) \ s {6,} $


4 Réponses :


11
votes

Je ne sais pas que je n'utiliserais pas une regex pour cela: Regex n'est pas toujours le bon outil pour tout type de travail possible ...

Ici, vous avez spécifié une liste de 6 exigences; Alors, pourquoi ne pas simplement utiliser 6 tests différents, un par exigence?
Ces 6 tests différents, devrais-je ajouter, seraient vraiment simples - tandis qu'une regex serait beaucoup plus difficile à écrire (vous avez demandé de l'aide - vous n'auriez probablement pas pour les 6 tests) .

Cela rendrait votre code beaucoup plus facile à comprendre, je parié ;-)
et aussi: plus facile à entretenir; et plus facile à ajouter / supprimer / changer l'une des conditions correspondant à l'une des exigences.


3 commentaires

Le deuxième avantage de cette méthode permettrait de fournir de meilleurs messages d'erreur lorsqu'un mot de passe ne répond pas aux exigences. Par exemple, indiquant quel type de caractère requis a été omis. Il n'y a rien de plus frustrant que d'entrer un mot de passe que vous pensez fonctionnera et obtiendra un message d'erreur générique.


@Thekaido: idem pour les 6 tests, même si la syntaxe pourrait être un peu différente ;;; @Emily: tellement vrai!


Attendre attendre! Un outil ne fonctionne pas pour tous les emplois? Si tel est le cas, vous dites aussi que je ne devrais pas utiliser une tronçonneuse pour le bon travail décoratif que je suis sur le point de faire! Phew! J'ai eu de la chance là-bas!



3
votes

Regexlib.com a des tonnes d'exemples pour vous et une base de données interrogeable de Reg Ex.


0 commentaires

10
votes

Je ne suis pas tout à fait sûr de ce que vous entendez par "caractère spécial", donc j'interprète cela à signifier \ w code>, mais vous pouvez modifier ceci si vous voulez:

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W)\S{6,15}$


1 commentaires

1
votes
1 => /^.{6,15}$/
2 => /[a-z]/
3 => /[A-Z]/
4 => /\d/
5 => /[#{special_chars_for_regex}]/
6 => /^\S*$/

2 commentaires

\ w signifie pas-word-caractère , pas pas-whitespace (c'est \ s , mais vous pourriez aussi bien incorporer cela dans la première condition comme @mark Byers a fait). En outre, "caractères spéciaux" signifie simplement la ponctuation.


J'ai changé \ w à \ s (merci). Je n'ai pas envie d'orthographier l'ensemble des images spéciales, mais ~! @ # $% ^ & * -_ -_ = + [{]} \ |.> /? "() pourrait faire dans une pincée.