2010-03-03 6 views
23

peut-on m'aider à créer une expression régulière pour la validation de mot de passe.Expression régulière pour la validation de mot de passe

La condition est « mot de passe doit contenir 8 caractères et au moins un numéro, une lettre et un caractère unique tel que !#$%&? "

+0

Les règles de mot de passe sont mauvaises. Veuillez consulter [Référence - Validation du mot de passe] (https://stackoverflow.com/questions/48345922/reference-password-validation) pour plus d'informations. – ctwheels

Répondre

49
^.*(?=.{8,})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!#$%&? "]).*$ 

--- 

^.*    : Start 
(?=.{8,})  : Length 
(?=.*[a-zA-Z]) : Letters 
(?=.*\d)   : Digits 
(?=.*[!#$%&? "]) : Special characters 
.*$    : End 
+0

+1 pour l'explication - testé avec quelques exemples et fonctionne à http://www.regular-expressions.info/javascriptexample.html – amelvin

+0

je fatigué avec 'acf23! & 7h' et son ne pas le valider – Andromeda

+0

Ne pas oublier de s'échapper caractères nécessaires ... – Macmade

5

Vous pouvez obtenir chacun des besoins individuels assez facilement (par exemple un minimum de 8 caractères : .{8,} correspondra 8 caractères ou plus) pour les combiner

vous pouvez utiliser « préanalyse positive » pour appliquer plusieurs sous-expressions au même contenu Quelque chose comme (?=.*\d.*).{8,} pour correspondre à un (ou plusieurs) chiffres avec préanalyse et.. 8 caractères ou plus

Alors:

 
(?=.*\d.*)(?=.*[a-zA-Z].*)(?=.*[!#\$%&\?].*).{8,} 

Se souvenir d'échapper à des méta-caractères.

+1

Vous avez quelques "inutiles" inutiles là-dedans. Vous pouvez simplement utiliser: (? =. * \ D) (? =. * [A-zA-Z]) (? =. * [! # \ $% & \?]). {8,} –

+0

@TomLord Je voudrais tester cela ... mais vous pourriez bien avoir raison (raison: bien sûr, chaque lookahead positif doit seulement confirmer jusqu'à une instance de chaque type de personnage). – Richard

+0

Oui, et la principale raison pour laquelle je l'ai souligné est que si votre expression rationnelle ne correspond pas alors il peut être rendu beaucoup plus inefficace pour le déterminer si vous ajoutez inutile ". –

7

Essayez cette

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).{6,20}) 

Description ci-dessus Expression régulière:

(   # Start of group 
    (?=.*\d)  # must contains one digit from 0-9 
    (?=.*[a-z])  # must contains one lowercase characters 
    (?=.*[\W])  # must contains at least one special character 
       .  #  match anything with previous condition checking 
       {8,20} #  length at least 8 characters and maximum of 20 
)   # End of group 

"/ W" va augmenter la gamme de caractères qui peuvent être utilisés pour le mot de passe et la fosse peut être plus en sécurité.

+0

Pourquoi avez-vous besoin de tous les (. *)? Semble fonctionner correctement si vous venez de faire: (? = \ d *) (? = [az] *) (? = [AZ ] *) (? = [\ W] *). {6,20} –

1

Vous pouvez créer votre propre expression régulière pour les validations javascript;

 (/^ 
     (?=.*\d)    //should contain at least one digit 
     (?=.*[a-z])    //should contain at least one lower case 
     (?=.*[A-Z])    //should contain at least one upper case 
     [a-zA-Z0-9]{8,}   //should contain at least 8 from the mentioned characters 

     $/) 

Exemple: - /^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]{7,}$/

4

Mot de passe avec les conditions suivantes:

  1. au moins 1 chiffre
  2. Au moins 2 caractères spéciaux
  3. Au moins 1 caractère alphabétique
  4. Pas d'espace

    'use strict'; 
    (function() { 
        var foo = '3g^g$'; 
    
        console.log(/^(?=.*\d)(?=(.*\W){2})(?=.*[a-zA-Z])(?!.*\s).{1,15}$/.test(foo)); 
    
        /** 
        * (?=.*\d)   should contain at least 1 digit 
        * (?=(.*\W){2}) should contain at least 2 special characters 
        * (?=.*[a-zA-Z]) should contain at least 1 alphabetic character 
        * (?!.*\s)   should not contain any blank space 
        */ 
    })(); 
    
Questions connexes