Comment valider les mots de passe à l'aide d'expressions canoniques! Il m'a fallu une journée entière pour comprendre ça Pour référence de personnes similaires. .. ..
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!-/:-@[-`{-~])[!-~]{8,48}$
Exemple de code Java
RegexPassword.java
package sample;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexPassword {
public static void main(String[] args) {
Pattern p = Pattern.compile("^$|^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!-/:-@\\[-`{-~])[!-~]*");
Matcher m = p.matcher("aA1!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~");
Boolean result = m.matches();
System.out.println("result:" + result);
}
}
Si vous connaissez le principe de base des expressions régulières Si vous connaissez le principe de base des expressions régulières 2
Facile à lire et à regarder en arrière
Table de codes de caractères ASCII facile à lire
Pour ceux qui ne comprennent pas la nécessité de . *
Of (? =. * [A-z])
Pour utiliser des expressions régulières en Java
Langue: Java8
À propos des expressions canoniques pour les mots de passe D'abord pour comprendre les perspectives positives J'ai écrit et exécuté le code suivant pour vérifier l'opération J'étais inquiet du faux quand il devrait retourner vrai.
package sample;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexWord {
public static void main(String[] args) {
Pattern p = Pattern.compile("^(?=.*[a-z])");
Matcher m = p.matcher("abc");
Boolean result = m.matches();
System.out.println("result:" + result);
}
}
En conclusion, j'ai dû réécrire la ligne Pattern p = ~
comme suit:
Pattern p = Pattern.compile("^(?=.*[a-z]).*");
Recommended Posts