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

JavaScript Discussion :

Comment vérifier un mot de passe ? [RegExp]


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Comment vérifier un mot de passe ?
    Bonjour,

    J'essaie de créer une expression régulière pour vérifier la complexité d'un mot de passe. Je voudrais qu'il ait une taille de 7 caractères minimum et qu'il contienne au moins 1 lettre majuscule, 1 lettre minuscule et 1 chiffre.

    Voici ce que j'ai commencé à faire mais ça ne fonctionne pas :

    EDIT : J'ai un petit peu avancé, celle-ci semble fonctionner mais ne vérifie pas la taille de la chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^([A-Z])+([a-z])+([0-9])+$
    Merci pour votre aide,
    ZiP

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu peux déjà commencer par regarder la : Les expressions régulières...

  3. #3
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Pour compléter la réponse de Bovino, je suis pas sûr qu'en une expression régulière t'arrives à vérifier que le mot de passe contient bien les caractères que tu veux.
    Tu pourras valider que le mot de passe fait bien 7 caractères et valider qu'il contient bien des caractères dans [a-zA-Z0-9] mais t'es pas sûr qu'ils sont effectivement utilisé.

    Ce que tu peux déjà faire, c'est vérifier la taille de ton mot de passe, et gérer l'erreur au cas ou ca va pas (sans regex donc). Et ensuite vérifier que la chaine contient bien un A-Z et ensuite un a-z et ensuite un 0-9.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par Tober Voir le message
    Pour compléter la réponse de Bovino, je suis pas sûr qu'en une expression régulière t'arrives à vérifier que le mot de passe contient bien les caractères que tu veux.
    Détrompes toi, c'est tout à fait possible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var passwordStrength = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{7,}/;
     
    passwordStrength.test('azerTy7'); // true
    passwordStrength.test('azerty7'); // false
    passwordStrength.test('azerTyy'); // false
    passwordStrength.test('AZERTY7'); // false
    passwordStrength.test('azerT6');  // false

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par TheGwy Voir le message
    Détrompes toi, c'est tout à fait possible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var passwordStrength = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{7,}/;
     
    passwordStrength.test('azerTy7'); // true
    passwordStrength.test('azerty7'); // false
    passwordStrength.test('azerTyy'); // false
    passwordStrength.test('AZERTY7'); // false
    passwordStrength.test('azerT6');  // false
    Oui, mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var passwordStrength = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{7,}/;
     
    passwordStrength.test('7zertY'); // false
    Dans ta regExp, tu vérifies juste qu'il y ai : au moins une minuscule, puis au moins une majuscule, puis au moins un nombre...

    La réponse de Tober est correcte, il faut faire trois tests distincts (ou les regrouper dans un seul, mais ensuite, c'est la lisibilité qui en pâtit...

  6. #6
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Jamais vu de ?= dans une expression régulière
    C'est spécial javascript ou ?

    Merci pour ta défence Bovino, c'est ce que je voulais dire

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Oui, mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var passwordStrength = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{7,}/;
     
    passwordStrength.test('7zertY'); // false
    Dans ta regExp, tu vérifies juste qu'il y ai : au moins une minuscule, puis au moins une majuscule, puis au moins un nombre...

    La réponse de Tober est correcte, il faut faire trois tests distincts (ou les regrouper dans un seul, mais ensuite, c'est la lisibilité qui en pâtit...
    Ha non pas du tout je vérifie aussi la longueur regarde bien :

    var passwordStrength = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{7,}/;

    De plus je ne vérifie pas qu'il y ai "au moins une minuscule, puis au moins une majuscule, puis au moins un nombre" mais au moins une minuscule ET au moins une majuscule ET au moins un nombre dans n'importe quel ordre. Car j'utilise des groupes dits "zero-length".

    Ton exemple te retourne false car ton test ne fait que 6 caractères et que la longueur minimale du mot de passe est 7 caractères. Donc au contraire cela marche très bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var passwordStrength = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{7,}/;
     
    passwordStrength.test('7zertY'); // false car mdp trop court
    passwordStrength.test('7zertYy'); // true

    @Tober
    Non non ce n'est pas spécifique JS, c'est ce qu'on appelle un "positive lookahead".

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    recherche les occurrences de pattern1 qui sont suivies de pattern2.
    recherche les occurrences de pattern1 qui ne sont pas suivies de pattern2.

    Donc sauf erreur de ma part, l'expression donnée est un peu bancale et en tout état de cause, confirme quand même que ça nuit légèrement à la lisibilité !

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Donc sauf erreur de ma part, l'expression donnée est un peu bancale et en tout état de cause, confirme quand même que ça nuit légèrement à la lisibilité !
    mais non pas du tout, c'est l'utilisation normale d'un look-ahead : établir une précondition.
    Après je te l'accorde c'est une utilisation un peu plus avancée des expressions régulières.

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ha non pas du tout je vérifie aussi la longueur regarde bien
    Arf... au temps pour moi...

    De plus je ne vérifie pas qu'il y ai "au moins une minuscule, puis au moins une majuscule, puis au moins un nombre"
    Oui, j'étais resté sur ta première version...

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Oui, j'étais resté sur ta première version...
    Ha il y a erreur sur la personne, ce n'est pas de moi.

  12. #12
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonsoir,

    Le code suivant marche à merveille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var maReg = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{7,}/;
    Merci à tous pour votre aide !

    Cordialement,
    ZiP

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ben j'avoue que j'étais pas au top sur les lookahead...

    Ca mériterait bien une proposition pour la FAQ RegExp !

  14. #14
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    +1 pour la FAQ

    Cordialement,
    ZiP

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

Discussions similaires

  1. comment crypter les mots de passe?
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/11/2005, 16h37
  2. Réponses: 1
    Dernier message: 19/09/2005, 13h56
  3. Réponses: 5
    Dernier message: 17/12/2004, 09h25
  4. Comment cacher un mot de passe ?
    Par benxitd dans le forum Windows
    Réponses: 2
    Dernier message: 02/12/2004, 10h59
  5. Comment changer le mot de passe sous Interbase
    Par ETOKA dans le forum InterBase
    Réponses: 3
    Dernier message: 05/08/2004, 11h25

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