IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Regex pour mot de passe


Sujet :

C#

  1. #1
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut Regex pour mot de passe
    Bonjour,

    J'ai besoin de crée une expression régulière afin de vérifier la conformité du nouveau mot de passe saisi par l'utilisateur.

    J'ai fait quelque recherche sur le net et donc trouvé quelques bouts d'expressions régulière que j'ai essayé d'adapter.

    Voilà mon expression :

    ^(?=.*\W)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$
    Sachant qu'il faut que celle-ci vérifie le fait que ma chaîne devra avoir un minimum de 8 caractères et contiennent au moins deux des éléments suivants :
    _ une lettre minuscule
    _ une lettre majuscule
    _ un chiffre
    _ un caractère spécial ( c'est à dire ni une lettre minuscule, ni une lettre majuscule, ni un chiffre)

    Je me doute que mon expression régulière ne correspond pas du tout.

    C'est pourquoi je vous demande de l'aide car je ne comprend pas bien comment former celle-ci.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Une petite piste pour t'aider (pas forcément la plus optimisée mais beaucoup plus clair)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    public bool IsPasswordValid(string password)
    {
    	if(password.Length < 8)
    		return false;
     
    	int validationsNumber = 0;
     
    	if(Regex.IsMatch(password, minCharRegex))
    		validationsNumber++;
     
    	if(Regex.IsMatch(password, majCharRegex))
    		validationsNumber++;
     
    	if(Regex.IsMatch(password, numberRegex))
    		validationsNumber++;
     
    	if(Regex.IsMatch(password, specialCharRegex))
    		validationsNumber++;
     
    	if(validationsNumber < 2)
    		return false;
     
    	return true;
    }
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  3. #3
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Merci de ta réponse mais j'ai finalement réussi à crée mon expression régulière que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Regex _regex = new Regex("((^(?=.*[A-Z])(?=.*[a-z]))|"
                    + "(^(?=.*[a-z])(?=.*[0-9]))|"
                    + "(^(?=.*[a-z])(?=.*[^a-zA-Z0-9]))|"
                    + "(^(?=.*[A-Z])(?=.*[0-9]))|"
                    + "(^(?=.*[A-Z])(?=.*[^a-zA-Z0-9]))|"
                    + "(^(?=.*[0-9])(?=.*[^a-zA-Z0-9]))).{8,}$");
    J'avoue elle fait un peu mal à la tête.

    Si quelqu'un passe par là et sait en faire une plus optimisé je suis preneur.

    Je tag résolu en attendant.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Salut,

    Je te conseille de vraiment utiliser le système que je t'ai proposé.
    Le fait que ta regex fonctionne ne fait pas tout : Un jour quelqu'un va repasser dessus (peut être même toi) et tu éviteras un suicide le jour où il y aura besoin de débogguer ça ;p
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  5. #5
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Oui j'imagine. Je risque de me détester à ce moment là .

    C'est pourquoi j'ai essayé de blinder au maximum les commentaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #region Règle validité Mot de passe.
                // Expression régulière vérifiant que le mot de passe soit composé d'un minimum de 8 caractères et qu'il contienne
                // au moin deux des éléments suivants :
                // _ une lettre minuscule
                // _une lettre majuscule
                // _un chiffre
                // _un caractère spécial (ni lettre minuscule, ni lettre majuscule, ni chiffre)
                #endregion
     
     
                // Le caractère '|' correspond à "ou".
                Regex _regex = new Regex("((^(?=.*[A-Z])(?=.*[a-z]))|"  // Vérifie la présence d'au moins une majuscule et une minuscule.
                     + "(^(?=.*[a-z])(?=.*[0-9]))|"                     // Vérifie la présence d'au moins une minuscule et un chiffre.
                     + "(^(?=.*[a-z])(?=.*[^a-zA-Z0-9]))|"              // Vérifie la présence d'au moins une minuscule et d'un caractère spécial.
                     + "(^(?=.*[A-Z])(?=.*[0-9]))|"                     // Vérifie la présence d'au moins une majuscule et un chiffre.
                     + "(^(?=.*[A-Z])(?=.*[^a-zA-Z0-9]))|"              // Vérifie la présence d'au moins une majuscule et d'un caractère spécial.
                     + "(^(?=.*[0-9])(?=.*[^a-zA-Z0-9])))"              // Vérifie la présence d'au moins un chiffre et d'un caractère spécial.
                     +".{8,}$");                                        // Oblige la chaîne de caractère à être composé d'au moins 8 caractères.

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 269
    Points : 460
    Points
    460
    Par défaut
    bonjour,

    Une regex dans ce style là devrait faire l'affaire non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-z^A-Z^0-9]).{8,}$
    Et vu quel utilise moins de groupe de capture, elle devrait aussi être plus rapide, mais c'est à verifier.

  7. #7
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Non elle ne fonctionne pas en faite car il faut que mon mot de passe valide au minimum 2 des éléments que j'ai énuméré ci-dessus.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Regex pour mot de passe
    Par vince29 dans le forum Langage
    Réponses: 2
    Dernier message: 26/09/2014, 19h44
  2. connection pour mot de passe
    Par itak33 dans le forum WebDev
    Réponses: 1
    Dernier message: 08/06/2007, 16h36
  3. [MySQL] problème envoi mail pour mot de passe
    Par bonsam dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/11/2006, 21h57
  4. utilisation Edit pour mot de passe
    Par devlopassion dans le forum C++Builder
    Réponses: 5
    Dernier message: 11/10/2006, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo