带过滤器的验证顺序

时间:2015-04-06 20:44:04

标签: java swing filter

我有以下代码:

String sPassword = pssfldLoginPsw.getText();
boolean match = sPassword.matches("[a-zA-Z+]+[0-9+]+[&@!#+]+");

if (match==false) 
{                            
    System.out.println("Didn't Work");                    
}

if (match==true) 
{
    System.out.println("Work"); 
} 

如果我输入H1@G2!,这会很有效。但是,如果我输入!G2G@5之类的内容,则会设置match=false。由于此字段需要包含字母,数字和非aplhanumerical字符,但它应该能够以任何顺序包含它们。我该怎么做?

1 个答案:

答案 0 :(得分:0)

所以我做了一些进一步的研究,发现"((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})"会做我需要做的事。

String sPassword = pssfldLoginPsw.getText();
boolean match = sPassword.matches("((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})");

if (match==false) 
{                            
    System.out.println("Didn't Work");                    
}

if (match==true) 
{
    System.out.println("Work"); 
} 

(?=.*\d)必须包含0-9

中的一位数字

(?=.*[a-z])必须包含一个小写字符

(?=.*[A-Z])必须包含一个大写字符

(?=.*[@#$%])必须在列表“@#$%”

中包含一个特殊符号

.匹配先前条件检查的任何内容

{6,20}长度至少6个字符,最多20个