我正在进行一个ATG项目。我的要求是"密码不应包含与UserName中相同的字符序列"。例如,如果用户名为abcdef@123.com.那么pw不应该是def@123.compw不应包含相同的SEQUENCE字符。它可以具有userName中的字符。但是字符的顺序不应该相同。
我该如何检查?
谢谢,Treesa
您可以执行以下操作来检查密码是否包含任何用户名序列:
public Boolean containsSequences(String uname, String pwd){
Boolean contains=false;
int count=0;
for (String seq: uname.split("/[@-._]/g")){ //split the username following this regex.
if(pwd.indexOf(seq)>0){
count++;
}
}
if(count>0){
contains=true;
}
return contains;
}
该方法在输入中获取两个字符串(username和pwd),然后获取用户名的子序列,并测试pwd是否包含其中一个,如果是,则返回true
表示pwd包含用户名序列。
或者你可以做得更好:
public Boolean containsSequences(String uname, String pwd){
Boolean contains=false;
for (String seq: uname.split("/[@-._]/g")){
if(pwd.contains(seq)|| pwd.contains(seq.toUpperCase())|| pwd.contains(seq.toLowerCase())){
contains=true;
break;
}
}
return contains;
}
使用passowrdString.contents(userNameString)