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

ASP.NET Discussion :

Construire un RegularExpressionValidator qui vérifie une chaîne (mot de passe) entrée par l'utilisateur


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 26
    Points
    26
    Par défaut Construire un RegularExpressionValidator qui vérifie une chaîne (mot de passe) entrée par l'utilisateur
    Bonjour,
    Je cherche à construire un RegularExpressionValidator qui vérifie une chaîne entrée par l'utilisateur avec les contraintes suivantes :
    - Chaine composée uniquement de chiffres et lettres
    - Chaîne de longueur mini : 8 caractères
    - Chaîne de longueur maxi : 12 caractères
    - contient au moins 3 caractères alpha et au moins 3 chiffres

    Pourriez-vous m'aider, je ne trouve pas la soluce...je suis bloqué avec les "au moins 3 caractères alpha et au mois 3 chiffres"....

    Merci par avance !

  2. #2
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Tu devrais faire une recherche sur Google avec "Regular Expression password". Tu as un exemple ici.

    A défaut => tuto sur les expressions régulières, ça ne fait pas de mal à apprendre

    En espérant t'avoir aidé.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    Merci pour la réponse, mais je suis déjà passé à travers les tutos et l'exemple que tu me cites ne me permet malheureusement pas de résoudre mon problème.
    En fait, je sèche sur les quantifiers permettant de compter les numériques et les alphas. Il semblerait qu'ils comptent les caractères éligibles successifs (dans les tutos, il n'y a d'exemple que pour la recherche d'un seul caractère du même type, donc forcément le problème ne se pose pas).
    Exemple, si je recherche dans ma chaîne au moins 3 décimaux, \d{3,} me renverra true sur une chaîne du type ab123c, mais pas sur a1b2b3, or c'est justement ce que souhaite....trouver si dans la chaîne il y a au moins 3 numériques n'importe où dans la chaîne et pas forcément successifs....
    Une idée ?
    Un grand merci par avance pour le coup de pouce...

  4. #4
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Si je regarde un exemple simple pour un password sur MSDN, j'ai ceci :

    (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$
    Validates a strong password. It must be between 8 and 10 characters, contain at least one digit and one alphabetic character, and must not contain special characters.
    Je ne suis pas expert en expression régulière, mais je suppose que ce que je t'ai souligné doit résoudre ton problème ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Bonjour et merci pour le suivi du post.

    Malheureusement non, cela ne solutionne pas le problème. Comme je l'ai indiqué il faut que la chaîne contienne au moins 3 digits et trois alphas.
    Ce test ne teste la présence que d'un seul digit. Pour en rechercher plusieurs, j'ai essayé d'utiliser les quantifiers et c'est là que je bute car les quantifiers fonctionnent sur des valeurs successives... Pour un seul digit et un seul alpha, j'avais la solution car on la trouve partout.

  6. #6
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Et en utilisant une expression de ce style ?

    (?=.*[0-9].*[0-9].*[0-9])

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 90
    Points : 71
    Points
    71
    Par défaut
    si tu veux, tu peux tester ton E.R. ici :

    http://www.annuaire-info.com/outil-r...ion-reguliere/

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Re,
    Merci pour ces réponses.

    @Nicolas : En fait, aujourd'hui la limite est 3, mais elle est susceptible de chager, donc je pense implémenter des paramètres et reconstruire l'expression à l'ouverture de ma page aspx.
    Donc au lieu de travailler sur le motif, il me faudrait pouvoir utiliser les quantifiers ou une méthode similaire.
    @Fraoch : Merci pour l'info, j'utilise également cet outil ou RegExBuilder

  9. #9
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Bonsoir,



    En Python , je fais comme suit.
    Bien remarquer que j’ai fixé le nombre d’alpha à 4 pour permettre la distinction avec les chiffres

    Ce ne devrait pas être bien compliqué d’adapter ça à la syntaxe de ASP.NET

    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
    import re
     
    c = '[^\d]*\d'
    a = '[^a-z]*[a-z]'
    nc = 3
    na = 4
     
    RE = '\A(?='+(nc*c)+')' +\
         '(?='+(na*a)+')' +\
         '(?=[a-z\d]{8,12}\Z)'
    pat = re.compile(RE)
     
    for code in ('123bbbb','123qqqqq','agh34nh45','ffger56333','jhgt45536gr','ghgf543gh56f',
                 'f1f2f3f4f5f6f','hg674*ujt3','12aqqqqq'):
        mat = pat.search(code)
        if mat: print code.ljust(16),'   OK'.ljust(10),len(code)
        else: print code.ljust(16), 'No match'.ljust(10),len(code)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    123bbbb          No match   7
    123qqqqq            OK      8
    agh34nh45           OK      9
    ffger56333          OK      10
    jhgt45536gr         OK      11
    ghgf543gh56f        OK      12
    f1f2f3f4f5f6f    No match   13
    hg674*ujt3       No match   10
    12aqqqqq         No match   8

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Super Merci eyquem, je m'en étais approché, mais j'avais encore des problèmes avec la longueur maxi.
    Ce coup-ci ça fonctionne !

    Merci bcp

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/05/2015, 09h11
  2. Fonction qui indique une chaîne de caractère
    Par luigieti dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 07/12/2013, 16h32
  3. Agent qui récupère une chaîne de caractères dans une JSP
    Par makaphrodite dans le forum Programmation par agent
    Réponses: 4
    Dernier message: 17/02/2013, 12h23
  4. [Turbo Pascal] Ecrire un programme qui lit une chaîne de caractères
    Par agan2012 dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 22/02/2009, 20h46
  5. Réponses: 2
    Dernier message: 05/07/2007, 21h11

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