4 votes

RegEx JavaScript alphanumérique pour la validation des mots de passe

J'utilise une regex ci-dessous pour valider le mot de passe afin d'accepter uniquement des caractères alphanumériques. La regex fonctionne si j'entre 2 caractères, un alpha et un chiffre, mais si plus de deux caractères, ma regex ne fonctionne pas. Je veux si possible obtenir les résultats suivants, comme indiqué dans "Comportement attendu". Quelqu'un peut-il m'aider à réécrire ma regex ?

JavaScript

  function checkPasswordComplexity(pwd) {
        var regularExpression = /^[a-zA-Z][0-9]$/;
        var valid = regularExpression.test(pwd);
        return valid;
    }

Comportement actuel

Password:Valid
a1:true
aa1:false
aa11:false

Comportement attendu

Password:Valid
aa:false (should have at least 1 number) 
1111111:false (should have at least 1 letter)
aa1:true
aa11:true
a1a1a1a1111:true

16voto

Benjamin Gruenbaum Points 51406

Vous voulez ajouter "un ou plusieurs", vous vérifiez actuellement une lettre suivie d'un chiffre.

Essayez :

/^[a-zA-Z0-9]+$/

+ signifie "un ou plusieurs".

J'ai également rejoint les rangs.

Note : Je ne comprends pas pourquoi vous voulez limiter le mot de passe à une si petite gamme de caractères, une large gamme de caractères rendra vos mots de passe plus efficaces. plus fort .

Voici un fiddle démontrant le comportement correct

Si vous voulez simplement valider que le mot de passe comporte au moins une lettre et au moins un chiffre, vous pouvez vérifier comme suit :

function checkPasswordComplexity(pwd) {
    var letter = /[a-zA-Z]/; 
    var number = /[0-9]/;
    var valid = number.test(pwd) && letter.test(pwd); //match a letter _and_ a number
    return valid;
}

4voto

Sameer Rangrez Points 152
function checkPasswordComplexity(pwd) {
        var regularExpression = /^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/;
        var valid = regularExpression.test(pwd);
        return valid;
    }

2voto

Casimir et Hippolyte Points 33449

Vous pouvez utiliser ceci :

/^(?=.*\d)(?=.*[a-z])[a-z\d]{2,}$/i

1voto

Doorknob Points 23912

Essayez de faire ça :

var regularExpression = /^[a-zA-Z0-9]+$/;

Cela signifie "une ou plusieurs lettres ou chiffres".

Toutefois, certains utilisateurs peuvent également vouloir saisir des symboles (comme &*# ) dans leurs mots de passe. Si vous voulez simplement vous assurer qu'il y a au moins une lettre et un chiffre tout en autorisant les symboles, essayez quelque chose comme ceci :

var regularExpression = /^(?=.*[a-zA-Z])(?=.*[0-9]).+$/;

Le site (?=.*[a-zA-Z]) est un lookahead positif. Cela signifie qu'il s'assure qu'il y a une lettre devant lui, mais cela n'affecte pas la regex.

1voto

M.Athish krishna Points 219
{
var pwd=document.getElementById('pwd').value;
var reg = /^[a-zA-Z0-9]{8,}$/;  
var re=reg.test(pwd);
alert(re);

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X