Expression régulière pour mot de passe (au moins 2 chiffres et un caractère spécial et la longueur minimale 8)
j'ai cherché une expression régulière qui accepte au moins deux chiffres et un caractère spécial et la longueur minimale du mot de passe est de 8. Jusqu'à présent, j'ai fait ce qui suit:[0-9a-zA-Z!@#$%0-9]*[!@#$%0-9]+[0-9a-zA-Z!@#$%0-9]*
6 réponses
quelque Chose comme cela devrait faire l'affaire.
^(?=(.*\d){2})(?=.*[a-zA-Z])(?=.*[!@#$%])[0-9a-zA-Z!@#$%]{8,}
(?=(.*\d){2}) - uses lookahead (?=) and says the password must contain at least 2 digits
(?=.*[a-zA-Z]) - uses lookahead and says the password must contain an alpha
(?=.*[!@#$%]) - uses lookahead and says the password must contain 1 or more special characters which are defined
[0-9a-zA-Z!@#$%] - dictates the allowed characters
{8,} - says the password must be at least 8 characters long
il pourrait avoir besoin d'un peu de peaufinage par exemple en spécifiant exactement quels caractères spéciaux vous avez besoin, mais il devrait faire l'affaire.
Il n'y a aucune raison, quelle qu'elle soit, de mettre en œuvre toutes les règles dans un seul regex. Pensez à le faire comme ceci:
Pattern[] pwdrules = new Pattern[] {
Pattern.compile("........"), // at least 8 chars
Pattern.compile("\d.*\d"), // 2 digits
Pattern.compile("[-!"§$%&/()=?+*~#'_:.,;]") // 1 special char
}
String password = ......;
boolean passed = true;
for (Pattern p : pwdrules) {
Matcher m = p.matcher(password);
if (m.find()) continue;
System.err.println("Rule " + p + " violated.");
passed = false;
}
if (passed) { .. ok case.. }
else { .. not ok case ... }
ceci a l'avantage supplémentaire que les règles passwort peuvent être ajoutées, supprimées ou modifiées sans effort. Ils peuvent même résider dans un fichier de ressources.
en outre, il est juste plus lisible.
essayez ce regex. Il utilise lookahead pour vérifier qu'il y a au moins deux chiffres et un des caractères spéciaux énumérés par vous.
^(?=.*?[0-9].*?[0-9])(?=.*[!@#$%])[0-9a-zA-Z!@#$%0-9]{8,}$
explication
^ #Match start of line.
(?=.*?[0-9].*?[0-9]) #Look ahead and see if you can find at least two digits. Expression will fail if not.
(?=.*[!@#$%]) #Look ahead and see if you can find at least one of the character in bracket []. Expression will fail if not.
[0-9a-zA-Z!@#$%0-9]{8,} #Match at least 8 of the characters inside bracket [] to be successful.
$ # Match end of line.
Essayez celui-ci:
^(?=.*\d{2,})(?=.*[$-/:-?{-~!"^_`\[\]]{1,})(?=.*\w).{8,}$
Voici comment cela fonctionne très prochainement:
(?=.*\d{2,})
cette partie disant sauf au moins 2 chiffres(?=.*[$-/:-?{-~!"^_
[]]{1,})` ce sont des caractères spéciaux, au moins 1(?=.*\w)
et le repos sont les lettres (égal à[A-Za-z0-9_]
).{8,}$
celui-ci indique au moins 8 caractères incluant toutes les règles précédentes. Ci-dessous est la carte pour regexp courant (fait avec l'aide de Regexper) UPD
Regexp devrait ressembler à ceci ^(?=(.*\d){2,})(?=.*[$-\/:-?{-~!"^_'\[\]]{1,})(?=.*\w).{8,}$
Découvrez les commentaires pour plus de détails.
essaye ceci : ^.*(?=.{8,15})(?=.*\d)(?=.*\d)[a-zA-Z0-9!@#$%]+$
s'il vous Plaît lire ci-dessous le lien pour faire le mot de passe de l'expression régulière de la politique:-
expressions régulières définir une structure sur la chaîne que vous essayez de faire correspondre. Sauf si vous définissez une structure spatiale sur votre regex (par exemple au moins deux chiffres suivis d'un caractère spécial, suivi de ...) vous ne pouvez pas utiliser un regex
pour valider votre chaîne.