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

Langage Java Discussion :

Contrôler la validité d'un mot de passe


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut Contrôler la validité d'un mot de passe
    Bonjour,

    J'aimerais faire une regex qui me permet de valider la complexité d'un mot de passe.

    Les conditions sont les suivantes :

    - 8 caractères au minimum
    - au moins une lettre (minuscule ou majuscule)
    - au moins un chiffre
    - les caractères spéciaux sont autoriés

    J'ai commencé la regex, mais je ne vois pas comment faire pour dire "au moins 1 lettre et au moins 1 chiffre"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(?=.{8,})(?=.*[A-Za-z])(?=.*[0-9])
    Qqun peut-il m'aider svp ?
    merci pour votre aide

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Euh... sauf erreur de ma part, ta regex fait exactement ce que tu souhaites :
    (?=.{8,}) : au moins 8 caractères
    (?=.*[A-Za-z]) : au moins une lettre
    (?=.*[0-9]) : au moins un chiffre
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut
    Ben le problème c'est qu'elle matche pas avec par exemple "application1" :-(

    Après je suis en java et non en PHP mais je dirais qu'une regex est une regex... utilisée en java ou en PHP elle doit fonctionner la même chose, non ?

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par doons Voir le message
    Après je suis en java et non en PHP mais je dirais qu'une regex est une regex... utilisée en java ou en PHP elle doit fonctionner la même chose, non ?
    Ben non, pas forcément, tout va dépendre de la version du moteur RegEx sans compter que tu peux tomber sur des variations entre différentes technos...

  5. #5
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 002
    Par défaut
    Ta pattern est correcte sur le principe, mais mon petit doigt me dit que tu n'utilises pas la méthode appropriée.

    Si tu utilises la méthode matches tu obtiendras toujours false car cette méthode exige que la pattern consomme tous les caractères de la chaîne jusqu'à la fin. Or ta pattern ne consomme aucun caractère car elle n'est composée que de lookaheads (tests avant). La méthode qui est appropriée à ta pattern est la méthode lookingAt qui renvoie true si la pattern réussit au début de la chaîne.

    Tu peux aussi adapter ta pattern pour qu'elle fonctionne avec matches à peu de frais en ajoutant .* à la fin pour consommer les caractères, mais à quoi bon?

    Quelque soit la méthode que tu utilises, l'ancre de début ^ est inutile car elle est implicite (de même que l'ancre de fin est implicite avec la méthode matches).

    Toujours avec la méthode lookingAt, tu peux aussi écrire ta pattern en décrivant ta chaîne en négatif (de cette manière, elle devrait échouer plus vite):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?!.{0,7}$|[^a-z]*$|[^0-9]*$)
    avec l'option CASE_INSENSITIVE.

    En bon français, elle signifie que le début de la chaîne ne doit pas être suivie:
    • de 0 à 7 caractères puis la fin de la chaîne.
    • de caractères qui ne soient pas des lettres ASCII (quelque soit la casse) puis la fin de la chaîne.
    • de caractères qui ne soient pas de chiffres ASCII puis la fin de la chaîne.

  6. #6
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut
    Bonjour,

    Merci pour vos réponses.
    En fait je vais partir sur la chaine en négatif si elle saute avant. Par contre, je ne dois pas empêcher les caractère spéciaux (!_* ..... doivent être acceptés) et ça fonctionne déjà, du coup je ne comprends pas très bien pourquoi il ne faut pas mettre qqch comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (?!.{0,7}$|[^a-z]*$|[^0-9]*$|[%*+/!]*$)

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

Discussions similaires

  1. [WD16] Vérifier la validité d'un mot de passe
    Par vins03150 dans le forum WinDev
    Réponses: 8
    Dernier message: 04/01/2012, 17h11
  2. [Blog] Service web XML-RPC vérifier validité identifiant et mot de passe
    Par calitom dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 05/10/2010, 19h21
  3. Commande passwd : contrôle de validité du mot de passe
    Par llaffont dans le forum Administration système
    Réponses: 1
    Dernier message: 12/02/2008, 11h03
  4. Durée de validité d'un mot de passe
    Par aicfr dans le forum Sécurité
    Réponses: 1
    Dernier message: 09/12/2006, 15h45

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