我有以下代码:
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!
,这会很有效。但是,如果我输入!G2
或G@5
之类的内容,则会设置match=false
。由于此字段需要包含字母,数字和非aplhanumerical字符,但它应该能够以任何顺序包含它们。我该怎么做?
答案 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个