java - 验证密码不包含来自名称的 3 个以上连续字符

标签 java regex validation passwords

我需要在 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);

最佳答案

对于你的 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;
}

关于java - 验证密码不包含来自名称的 3 个以上连续字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16797636/

相关文章:

python - 查找字符串中下一次出现的位置

php - 如何使用 php 从 mysql 查询中提取表名?

angular - angular 2中的多个自定义验证

validation - 为什么我的基于 DataAnnotations 的手动验证不起作用?

ruby-on-rails - rails 中的 has_one 关系验证

java - 在 arraylist 中添加元素的 SQL 查询

java - 具有重复值(键,值)的有序集合

java - 如何在 Java/Groovy 中开发数据透视表

java - 是否递增运算符,例如 count++;在本地存储 volatile 数据线程?

javascript - 使用书签更改网址