需要正则表达式进行密码验证,并将特殊字符作为可选条件:java
我需要一个必须符合以下条件的正则表达式需要正则表达式进行密码验证,并将特殊字符作为可选条件:java,java,Java,我需要一个必须符合以下条件的正则表达式 条件1:至少1个大写字母 条件2:至少1个小写字母 条件3:至少1位 条件4:特殊字符是可选的,但如果输入字符串中存在特殊字符,则它必须在这些字符中::/\_-()][#“'&$*%+=}{ 以下程序满足条件1、条件2、条件3,但不满足条件4 对于条件4,此正则表达式检查至少1个特殊字符,我希望此检查是可选的 import java.util.regex.Matcher; import java.util.regex.Pattern; public cl
条件1:至少1个大写字母
条件2:至少1个小写字母
条件3:至少1位
条件4:特殊字符是可选的,但如果输入字符串中存在特殊字符,则它必须在这些字符中:
:/\_-()][#“'&$*%+=}{
以下程序满足条件1、条件2、条件3,但不满足条件4
对于条件4,此正则表达式检查至少1个特殊字符,我希望此检查是可选的
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PasswordValidation {
public static void main(String[] args) {
// TODO Auto-generated method stub
String loginpwd = "sssaQjs#d123";
String LOGIN_PASSWORD_VALIDATION = "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[\\\\!\"#$%&()*+,./:;=?\\[\\]_{}])(?=\\S+$).{8,15}";
Pattern password_Pattern = Pattern.compile(LOGIN_PASSWORD_VALIDATION);
Matcher password_matcher = password_Pattern.matcher(loginpwd);
if(password_matcher.matches())
System.out.println("match");
else
System.out.println("doesnot match");
}
}
将这三个字符类添加到特殊字符的字符类中,就如中所示
String LOGIN_PASSWORD_VALIDATION = "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?!.*[^\\\\!\"#$%&()*+,./:;=?\\[\\]_{}A-Za-z0-9])\\S{8,15}";
它断言在[\\\\!\“\\$%&()*+,./:;=?\[\\]\{}a-Za-z0-9]
类之外没有字符。请注意前面的负面展望
由于字符类包含字母和数字,因此特殊字符是可选的。publicstaticvoidmain(String[]args){
public static void main(String[] args) {
// TODO Auto-generated method stub
String password = "sssaQjs#d123";
boolean hasUppercase = !password.equals(password.toLowerCase());
boolean hasLowercase = !password.equals(password.toUpperCase());
boolean hasDigit = password.matches(".*[0-9].*");
boolean hasSpecial = password.matches(".*<all special characters escaped as alternative>.*");
if(hasUppercase && hasLowercase && hasDigit && hasSpecial)
System.out.println("match");
else
System.out.println("doesnot match");
}
//TODO自动生成的方法存根
字符串password=“sssaQjs#d123”;
布尔hassuppercase=!password.equals(password.toLowerCase());
布尔hasLowercase=!password.equals(password.toUpperCase());
布尔hasDigit=password.matches(“%0-9]”);
布尔hasSpecial=password.matches(“.*”);
if(hassuppercase&&hasslowercase&&hassdigital&&hasSpecial)
System.out.println(“匹配”);
其他的
System.out.println(“不匹配”);
}
我不明白你说的是什么。但在同一时期,我还面临着另一个问题regex@divine对它进行了一点修改。由于Matcher.matches()不需要$anchor方法,该方法尝试与整个字符串完全匹配。您可以尝试一下吗?它适用于我尝试过的情况。不确定取消投票的原因。Naveed,我没有取消投票。我将检查您的编辑并更新您。Xentros,我将验证此方法是否有效,并更新您确保您键入(#|@|…)和双转义\。您需要为java和正则表达式转义它