校验规则:

密码必须由大小写字母+字符+数子组合,最少八位,不允许4位及以上连续或重复的数字或字母

PassWordUtil 工具类:

public class PassWordUtil {/*** 密码是否是正序或反序连续4位及以上** @param pwd* @return true为正确,false为错误。*/
public static boolean isPasswordContinuous(String pwd) {//正序次数int count = 0;//反序次数int reverseCount = 0;String[] strArr = pwd.split("");//从1开始是因为划分数组时,第一个为空for (int i = 1; i < strArr.length - 1; i++) {if (isPositiveContinuous(strArr[i], strArr[i + 1])) {count++;} else {count = 0;}if (isReverseContinuous(strArr[i], strArr[i + 1])) {reverseCount++;} else {reverseCount = 0;}if (count > 2 || reverseCount > 2) break;}if (count > 2 || reverseCount > 2) return false;return true;
}/*** 是否是正序连续** @param str1* @param str2* @return*/
public static boolean isPositiveContinuous(String str1, String str2) {if (str2.hashCode() - str1.hashCode() == 1) return true;return false;
}/*** 是否是反序连续** @param str1* @param str2* @return*/
public static boolean isReverseContinuous(String str1, String str2) {if (str2.hashCode() - str1.hashCode() == -1) return true;return false;
}/*** 验证密码是否存在多个连续重复的字符, 如!!!!, qqqq, 1111, ====, AAAA** @param password    字符串* @param repetitions 重复次数* @return false:不重复*/
public static boolean checkSequentialSameChars(String password, int repetitions) {String t_password = new String(password);int n = t_password.length();char[] pwdCharArr = t_password.toCharArray();boolean flag = false;int limit_num = repetitions;int count = 0;for (int i = 0; i + limit_num <= n; i++) {count = 0;for (int j = 0; j < limit_num - 1; j++) {if (pwdCharArr[i + j] == pwdCharArr[i + j + 1]) {count++;if (count == limit_num - 1) {return true;}}}}return flag;
}/*** - 字母区分大小写,可输入符号<br/>* - 密码必须同时包含大写字母、小写字母、特殊符号和数字<br/>* - 密码长度8-20位<br/>* - 密码中不能存在连续4个及以上的数字或字母(如:1234、7654、abcd、defgh等)<br/>* - 验证密码是否存在4个及以上连续重复的字符, 如!!!!, qqqq, 1111, ====, AAAA <br/>* @param password 密码* @return true为正确,false为错误*/
public static boolean isPasswordAvailable(String password) {//必须同时包含字母数字并且是8-20位,字符需要哪些可以调整正则,不可能无限支持所有的字符,一般都是指定部分字符String str = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{8,20}";if (password.matches(str) && !checkSequentialSameChars(password, 4)) {return isPasswordContinuous(password);}return false;
}public static void main(String[] args) {System.out.println(isPasswordAvailable("11111111") ? "符合规范" : "不符合");System.out.println(isPasswordAvailable("Aa@12345678") ? "符合规范" : "不符合");System.out.println(isPasswordAvailable("abABCd@7415") ? "符合规范" : "不符合");System.out.println(isPasswordAvailable("aaaaABbbbb1@") ? "符合规范" : "不符合");System.out.println(isPasswordAvailable("AAacd123456@") ? "符合规范" : "不符合");System.out.println(isPasswordAvailable("1Q2@222e4r") ? "符合规范" : "不符合");System.out.println(isPasswordAvailable("12121212.Aa111") ? "符合规范" : "不符合");}
}

参考:
常见密码正则表达式:
https://www.cnblogs.com/daizhongxing/p/11593137.html
https://blog.csdn.net/mzz5240/article/details/46940983

密码校验:大小写字母、字符、数字组合,最少8位相关推荐

  1. python编程实战(二):一文教你生成随机验证码!大小写字母与数字组合,位数可以控制

    随机验证码的生成 前言 正文 实现 代码 效果 前言 验证码验证,是常见的安全验证的一种方式,可以用来杜绝脚本和机器人操作等等: 除了本文介绍的简单的验证码之外,还有拼图验证.文字顺序验证等常见的验证 ...

  2. java正则校验-密码至少要由包括大小写字母、数字、标点符号的其中两项,共计8-16位编码组成

    很多朋友在问正则组合校验的问题,但网上那些大都是不对的,现贴上我在项目中写的部分源码供大家取用. String regex = "^(?![A-Za-z]+$)(?!\\d+$)(?![\\ ...

  3. formValidator正则校验密码大小写字母加数字

    RegexValidator:   属性 属性名称 默认值 详细解释 regexp 正则表达式 "" 采用的是显式构造函数new RegExp("pattern" ...

  4. 密码验证:8-20位必须包含大写字母,小写字母,数字组合,特殊字符

    8-20位必须包含大写字母,小写字母,数字组合,特殊字符 1.放在一起验证 function hidePsw(psw){psw = psw.toString();var ISPWD =/^(?=.*[ ...

  5. 任意长度密码(密码可输入大小写字母 和 数字)的加密与解密

    密码的加密:  输入一串任意长度的密码可包含大小写字母和数字  加密规则如下:  每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和最后位交换,第二位和倒数第二位交换....输入一个未加 ...

  6. 组合学:26个字母(含大小写)和10个数字组合为4位串的可能性测算

    使用26个字母(含大小写,实际为52个字母)和10个数字组合一个4位的串码,问有多少种组合? 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k' ...

  7. Java 判断密码是否是大小写字母、数字、特殊字符中的至少三种

    Java 判断密码是否是大小写字母.数字.特殊字符中的至少三种public class CheckPassword {//数字public static final String REG_NUMBER ...

  8. php统计大写字母个数,C++_C++统计中英文大小写字母、数字、空格及其他字符个数的方法,本文实例讲述了C++统计中英文 - phpStudy...

    C++统计中英文大小写字母.数字.空格及其他字符个数的方法 本文实例讲述了C++统计中英文大小写字母.数字.空格及其他字符个数的方法.分享给大家供大家参考,具体如下: /* * 作 者: 刘同宾 * ...

  9. 正则表达式:密码必须为8~16位非空字符,并包含大小写字母、数字、特殊字符

    正则const pwpattent = /^(?!.\s)(?=.[A-Z])(?=.[a-z])(?=.[0-9])(?=.*[\W_]).{8,16}$/; <el-form :model= ...

  10. 登录密码规则复杂度:8-20位,必须包含大写字母,小写字母,数字组合,必须包含下面一位特殊字符(#@$%*~)

    登录密码规则复杂度:8-20位,必须包含大写字母,小写字母,数字组合,必须包含下面一位特殊字符(#@$%&*~) function hidePsw(psw){psw = psw.toStrin ...

最新文章

  1. matlab表白_520新玩法!MATLAB大神教你画爱心
  2. SpringBoot + WebMagic实现一个的爬虫框架
  3. 智能指针的释放_手把手教你实现智能指针
  4. 在线学习新编程 技巧全攻略
  5. UBC、谷歌联合Hinton等提出3D点云的无监督胶囊网络,多任务上实现SOTA
  6. 情人节海报psd分层模板|好的图层,任你选择
  7. 微软开源 Outlook for iOS 暗黑模式解决方案:支持 iOS 11 及更高版本
  8. 寒武纪与华为海思分庭抗礼:中立芯片公司的成人礼
  9. 华为获 25 份 5G 合同;ofo 退款用户数超千万;贾跃亭躲豪宅拒收法律文书 | 极客头条...
  10. Bailian2811 熄灯问题【暴力】
  11. ios录制视频时audio丢失
  12. proc文件系统实现用户空间与内核空间的数据通信
  13. 狮子鱼社区团购小程序独立版 安装教程及后台设置小程序APPID,微信支付,腾讯地图AppKey
  14. 联通混改旗开得胜,这也太容易了!
  15. Arxiv 2206 | Global Context Vision Transformers
  16. java duplicate key_java.lang.IllegalStateException: Duplicate key 1
  17. python 集合字典_frozenset defaultdict MD5在线加密解密工具
  18. 贪吃蛇 c语言 不死模式,贪吃蛇大作战不死版-贪吃蛇大作战不死版本下载-乐游网安卓下载...
  19. 关于使用KEIL建立STM32项目(附带建立好的工程以及注意事项)
  20. 区块链100讲:梅克尔树保障区块链数据不可篡改,想换根就要砍树!

热门文章

  1. 用dw给html动态时间代码,dw中如何制作时间动态代码
  2. 整理学习:100多道前端面试题(一起加油,且行且珍惜)
  3. 淄博市计算机培训动画制作,网页制作与电脑动画制作培训
  4. Web服务统一身份认证协议设计与实现
  5. 255%可用已接通电源_家用电器电源开关(按钮)的符号使用讲解
  6. mysql中的left和right
  7. ANSYS APDL学习(9):命令流报错No *Do trips needed, enter *ENDDO .解决办法
  8. html图片做成菱形,html – 使用css创建菱形叠加图像
  9. 使用mdadm创建raid mdadm命令详解_php_sir_新浪博客
  10. 远程DNS缓存攻击__网络攻防实验三