3

我需要在 Java 中进行密码验证后执行此操作

  • 长度必须至少为 8 个字符
  • 必须包含至少 1 个数字
  • 必须包含至少 1 个大写字母
  • 必须包含至少 1 个小写字母
  • 不能包含来自您的全名或用户名的 3 个或更多连续字符(例如,如果您的名字是Will您无法获得密码Stiller458

我有前4分,我怎么做最后一分?

目前我有:

String pattern = "^(?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])\\S{8,}$";
boolean passwordValidation = originalPassword.matches(pattern);
4

2 回答 2

7

对于您的 1,2,3,4 案例

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z\d]{8,}$

对于您的第 5 个案例

public boolean isValid(final String userName,final String password)
{
    for(int i=0;(i+2)<userName.length();i++)
          if(password.indexof(userName.substring(i,i+2))!=-1)
                return false;
    return true;
}
于 2013-05-28T17:22:21.380 回答
2

最后一点不是你用正则表达式做的事情。遍历名称并检查密码。

正则表达式擅长模式,而不是解析。一种或另一种方式,您必须使用循环来遍历名称。

于 2013-05-28T17:10:44.990 回答