[A-Za-z!$#%\d\u0100]{6}
correspond aS1%eĀ
.
\u0100
est pour un. Vous pouvez insérer d'autres codes Unicode dont vous avez besoin. Vous pouvez les trouver here.
EDIT: Pour un minimum de 6 caractères est la regex correcte [A-Za-z!$#%\d\u0100]{6,}
.
EDIT 2: Pour inclure une plage de caractères Unicode (que ce soit Latin Extended-B), l'expression regex doit ressembler à ^[A-Za-z!$#%\d\u0100-\u017f]{6,}$
. Vous pouvez trouver les plages de codes Unicode here.
EDIT 3: J'ai développé une petite fonction qui vérifie si le mot de passe donné est conforme aux critères. Vous devez définir la plage Unicode dans la fonction.
function isValidPassword(password) {
var unicodeRange = "\\u0100-\\u0105";
var criteria = ["A-Z","a-z","\\d","!$#%",unicodeRange];
// check whether it doesn't include other characters
var re = new RegExp("^[" + criteria.join("") +"]{6,}$");
if(!re.test(password)) return false;
var minSatisfiedCondition = 3;
var satisfiedCount = 0;
for(var i=0; i < criteria.length; i++) {
re = new RegExp("[" + criteria[i] + "]");
if(re.test(password)) ++satisfiedCount;
}
return (satisfiedCount >= minSatisfiedCondition);
}
Il existe un échantillon de travail here.
Pourquoi le downvote? L'OP ne cherche pas à créer un login Javascript, mais une simple validation lorsque l'utilisateur spécifie le mot de passe. –
Quelques anciens commentaires sur les mots de passe de pseudo-forte: http://www.codinghorror.com/blog/2005/07/passwords-vs-pass-phrases.html – Douglas
Ce n'est pas une tâche simple pour une expression régulière. Comme Sachin le propose dans son anser, il serait plus facile d'écrire votre propre routine d'analyse de chaînes et de compter si vos critères correspondent. – splash