需要使用特殊字符作为可选标准进行密码验证的正则表达式:java

时间:2016-12-08 11:10:26

标签: java

我需要一个必须符合以下条件的正则表达式

条件1:Atleast 1大写字母

条件2:Atleast 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");
    }
}

2 个答案:

答案 0 :(得分:0)

  $("#updateUserForm").on('submit', function (e) {
       e.preventDefault();
   });

答案 1 :(得分:-1)

将三个字符类添加到特殊字符的字符类中,就像在

中一样
String LOGIN_PASSWORD_VALIDATION = "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?!.*[^\\\\!\"#$%&()*+,./:;=?\\[\\]_{}A-Za-z0-9])\\S{8,15}";

它断言[\\\\!\"#$%&()*+,./:;=?\\[\\]_{}A-Za-z0-9]类之外没有字符。注意前方的负面看法。

由于字符类包含字母和数字,因此它使特殊字符成为可选字符。