-2
votes

Quelle est l'expression régulière pour vérifier si une chaîne n'a pas plus de 2 caractères répétitifs?

HI, j'ai besoin de vérifier les mots de passe. Le mot de passe ne doit pas contenir plus de 2 caractères répétitifs.

Mon mot de passe doit contenir au moins majuscule, minuscule, numéro et caractères spéciaux # ?! @ $% ^ & * -

Donc, si j'ai un mot de passe comme par exemple

mot de passe123 $ Il est valide Password123 $ il est invalide Passssword123 $ il est invalide Ppaassword123 $$ valide Ppaassword123 $$$ Il est invalide

S'il vous plaît aidez-moi merci


1 commentaires

Vous voudrez peut-être jeter un coup d'œil à ces directives si vous implémente un algorithme de contrôle de mot de passe ...


3 Réponses :


0
votes

Je ne sais pas comment faire le caractère restreint et la validation de caractères répétée avec le même motif, mais ces deux motifs rempliront chaque besoin. Pour les utiliser, comparez votre chaîne de mot de passe sur les motifs et si une correspondance est trouvée, le mot de passe échoue.

caractères qui ne sont pas des lettres, des numéros ou dans le groupe de symboles "#? @ $% ^ & * -" xxx

lettres répétées 3 fois ou plus xxx


0 commentaires

0
votes

Pour vérifier au moins un de chaque type de caractère:

^(?!(.)\1{2,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[#?!@$%^&*-])([a-zA-Z0-9#?!@$%^&*-]+)$


5 commentaires

Cela ne permet aucun caractère sauf [a-za-z0-9 # ?! @ $% ^ & * -] - question n'empêche pas (, < code> _ , : , etc


De plus, la lunette de regard négatif peut avoir besoin d'être (?!. * (.) \ 1 \ 1)


C'est une hypothèse cependant. L'OP a donné une liste spécifique de caractères spéciaux, pas un exemple de caractères spéciaux, ce qui précise les autres. Accordé, le mien est une hypothèse également, mais le vôtre s'initierait davantage s'ils avaient dit "caractères spéciaux, par exemple. # ?! @ $% ^ & * -"


Vous avez probablement raison sur le regard négatif, ma regex est un peu rouillée.


Exécutez-le via REGEX101 et votre expression ne correspond pas correctement. Des hypothèses, pourraient être "tout ce qui n'est pas interdit est autorisé" ou "tout ce qui n'est pas permis n'est interdit". seul op peut décider



0
votes

https://regex101.com/r/ctbm4b/2/

^(?!.*(.)\1\1)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[#?!@$%^&*-]).*$
  • ^ code> ... $ code> - doit correspondre à la chaîne entière li>
  • (? =. * code> x fort> ) code> - doit contenir x strong>
    • (? =. * [A-Z]) CODE> - A..Z LI>
    • (? =. * [A-Z]) CODE> - A..Z LI>
    • (? =. * [0-9]) code> - 0..9 li>
    • (? =. * [# ?! @ $% ^ & * -]) code> - # ?! @ $% ^ & * - Li> ul> li>
    • ( code> y strud> ) + code> - une ou plusieurs répétitions de y fort> (Capture Group 1: \ 1 code>)
      • (.) code> - n'importe quoi (capture groupe 2: \ 2 code>) li>
      • (.) (?! \ 2 \ 2) code> - Tout ce qui n'est pas suivi par lui-même deux fois li> ul> li> ul>

        ou légèrement plus efficacement, en tirant la condition finale: p>

        https://regex101.com/r/ctbm4b/3/ p> xxx pré>

        • (?!. * (.) \ 1 \ 1) code> - ne doit pas contenir trois répétitions de n'importe quel caractère li> ul> p>


0 commentaires