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

Collection et Stream Java Discussion :

Regex sur syntaxe mot de passe


Sujet :

Collection et Stream Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Points : 29
    Points
    29
    Par défaut Regex sur syntaxe mot de passe
    Bonjour,

    Je dois utiliser les regex pour vérifier la syntaxe d'un mot de passe encodé qui doit avoir la syntaxe suivante:
    - Débuter par une majuscule
    - Avoir au moins 2 lettres minuscules, 2 chiffres et 1 caractère spécial mais celui-ci ne peut être égal à | (sur ce 2ème point, l'ordre n'a pas d'importance donc on peut avoir 2 lettres, caractère spécial puis 3 chiffres ou le caractère spécial à la fin, ...

    J'ai écrit la REGEX suivante: [A-Z][a-z]{2,}[0-9]{2,}(\\W+(^|))

    Cela fonctionne bien si je respecte l'ordre majuscule, minuscules, chiffres puis caractère spécial mais pas si l'ordre est changé.

    Pourriez-vous m'aider pour cela?

    Merci.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2010
    Messages : 51
    Points : 79
    Points
    79
    Par défaut
    Bonjour,
    il manque en effet quelque morceaux dans ton expression. Je suis un fervent utilisateur des expressions régulière ; en l'occurrence tu ne pourras pas faire tenir ces conditions en une seule expressions à moins de tester toutes les combinaisons. Bien que les expressions type perl ne soient pas tout à fait déterministes au niveau de l'analyse et de l'avidité, il est en revanche difficile de demande de trouver des caractères dans le désordre en les totalisant...

    Je te suggère donc d'utiliser une expression comme suis :
    - Une pour vérifier que ton mdp commence par une maj
    - Une pour vérifier que ton mdp contient au moins un caractère spécial (attention, au lieu d'autoriser tous les caractères, entre les caractères spéciaux autorisés un par un tu pourrait avoir des surprises)
    - Une pour au moins deux chiffres
    - une pour les deux lettres minuscules

    Tu pourras ainsi en plus indiquer un message d'erreur beaucoup plus précis à l'utilisateur. Pas trop déçu ?!

  3. #3
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 629
    Points : 15 800
    Points
    15 800
    Par défaut
    En fait c'est faisable en une seule expression régulière, même si ce n'est pas particulièrement beau. En utilisant les "lookafter", on peut cumuler toutes ces règles:
    [A-Z](?=(.*[a-z]){2,})(?=(.*[0-9]){2,})(?=(.*\W)+})(?!.*\|).*
    Si tu utilises une telle expression régulière, pense à la présenter clairement dans ton code car sinon, c'est une horreur.
    Tu peux par exemple faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String regex = "[A-Z]"               + //commence par une majuscule
                   "(?=(.*[a-z]){2,})"   + //contient au moins deux minuscule
                   "(?=(.*[0-9]){2,})"   + //contient au moins deux chiffres
                   "(?=(.*\\W)+})"       + //contient au moins un caractère spécial
                   "(?!.*\\|)"           + //ne contient pas de '|'

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2010
    Messages : 51
    Points : 79
    Points
    79
    Par défaut
    Mince alors je n'avais jamais entendu des lookahead, c'est dingue !
    désolé pour l'intox alors

  5. #5
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 629
    Points : 15 800
    Points
    15 800
    Par défaut
    En effet, c'est une fonctionnalité très puissante mais malheureusement assez méconnue, étant donné qu'elle n'est pas supportée par tous les moteurs d'expression régulières.

Discussions similaires

  1. Test sur le mot de passe
    Par mdh12 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 24/02/2010, 17h39
  2. [RegEx] conditions sur un mot de passe
    Par abdou13om dans le forum Langage
    Réponses: 1
    Dernier message: 21/11/2008, 12h22
  3. une aide sur le mot de passe pour VB6
    Par aminepop dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 12/07/2008, 17h16
  4. [Sécurité] Question sur les mots de passes
    Par wallawalla dans le forum Langage
    Réponses: 4
    Dernier message: 02/04/2007, 18h51
  5. [MySQL] [débutante] test sur le mot de passe avec smd5
    Par Lyna31 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/03/2007, 18h04

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