Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2011, 22h22   #1
Membre actif
 
Homme
Inscription : octobre 2006
Messages : 664
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : octobre 2006
Messages : 664
Points : 197
Points : 197
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 :
^([A-Z])+([a-z])+([0-9])+$
Merci pour votre aide,
ZiP
[ZiP] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 08h11   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 787
Points : 35 787
Tu peux déjà commencer par regarder la : Les expressions régulières...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 13h56   #3
Membre Expert
 
Avatar de Tober
 
Homme Thomas
Ingénieur développement logiciels
Inscription : juillet 2007
Messages : 741
Détails du profil
Informations personnelles :
Nom : Homme Thomas
Âge : 27
Localisation : Luxembourg

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

Informations forums :
Inscription : juillet 2007
Messages : 741
Points : 1 000
Points : 1 000
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.
Tober est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 14h55   #4
Membre régulier
 
Inscription : décembre 2007
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 61
Points : 83
Points : 83
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 :
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
TheGwy est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/12/2011, 14h59   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 787
Points : 35 787
Citation:
Envoyé par TheGwy Voir le message
Détrompes toi, c'est tout à fait possible.

Code :
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 :
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...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/12/2011, 15h26   #6
Membre Expert
 
Avatar de Tober
 
Homme Thomas
Ingénieur développement logiciels
Inscription : juillet 2007
Messages : 741
Détails du profil
Informations personnelles :
Nom : Homme Thomas
Âge : 27
Localisation : Luxembourg

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

Informations forums :
Inscription : juillet 2007
Messages : 741
Points : 1 000
Points : 1 000
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
Tober est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h35   #7
Membre régulier
 
Inscription : décembre 2007
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 61
Points : 83
Points : 83
Citation:
Envoyé par Bovino Voir le message
Oui, mais
Code :
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 :
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".
TheGwy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h38   #8
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 787
Points : 35 787
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é !
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h41   #9
Membre régulier
 
Inscription : décembre 2007
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 61
Points : 83
Points : 83
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.
TheGwy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h42   #10
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 787
Points : 35 787
Citation:
Ha non pas du tout je vérifie aussi la longueur regarde bien
Arf... au temps pour moi...

Citation:
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...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h44   #11
Membre régulier
 
Inscription : décembre 2007
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 61
Points : 83
Points : 83
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.
TheGwy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 23h31   #12
Membre actif
 
Homme
Inscription : octobre 2006
Messages : 664
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : octobre 2006
Messages : 664
Points : 197
Points : 197
Bonsoir,

Le code suivant marche à merveille :

Code :
var maReg = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{7,}/;
Merci à tous pour votre aide !

Cordialement,
ZiP
[ZiP] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 14h37   #13
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 787
Points : 35 787
Ben j'avoue que j'étais pas au top sur les lookahead...

Ca mériterait bien une proposition pour la FAQ RegExp !
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 17h24   #14
Membre actif
 
Homme
Inscription : octobre 2006
Messages : 664
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : octobre 2006
Messages : 664
Points : 197
Points : 197
+1 pour la FAQ

Cordialement,
ZiP
[ZiP] est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h27.


 
 
 
 
Partenaires

Hébergement Web