密码正则

package com.example.exceptiondemo.util;

/**
 * @author FBin
 * @date 2019/12/2 10:26
 */
public class CheckPassword {

    //6-12位,至少包括数字、字母两种组合
    public static final String PW_PATTERN_ONE = "^(?=.*[0-9])(?=.*[a-zA-Z])(?!^.*[\\u4E00-\\u9FA5].*$)(?=\\S+$).{6,12}$";
    //public static final String PW_PATTERN_ONE = "^(?![0-9]+$)(?![0-9-/+.~!@#$%^`&*_()]+$)(?![a-z-/+.~!@#$`%^&*_()]+$)(?![A-Z-/+.~!@#$`%^&_*()]+$)(?![a-zA-Z-/+.~!@#$`%^&*()_]+$)(?![-/+.~!@#$`%^&*_()]+$)(?![a-zA-Z]+$)[0-9A-Za-z-/+.~!@#$`%^&_*()]{6,12}$";
    //public static final String PW_PATTERN_ONE = "^(?![a-z]+$)(?![A-Z]+$)(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,12}$";
    //public static final String PW_PATTERN_ONE = "^(?![a-z0-9]+$)(?![A-Za-z]+$)(?![A-Z0-9]+$)[a-z0-9]|[A-Z0-9]{6,12}$"; [a-z0-9]|[A-Z0-9]|
    //8-16位,至少包含数字、字母、符号两种组合
    public static final String PW_PATTERN_TWO = "^(?=.*[0-9a-zA-Z%&',;*@!$%^()_+=?$\\x22])(?![0-9]+$)(?![a-zA-Z]+$)(?![%&',;*@!$%^()_+=?$\\x22]+$)(?!^.*[\\u4E00-\\u9FA5].*$)(?=\\S+$).{8,16}$";
   // public static final String PW_PATTERN_TWO = "((?=.*\\d)(?=.*\\D)|(?=.*[a-zA-Z])(?=.*[^a-zA-Z]))(?!^.*[\\u4E00-\\u9FA5].*$)^\\S{8,16}$";
    //public static final String PW_PATTERN_TWO = "^(?![A-Z]+$)(?![a-z]+$)(?![0-9]+$)(?![\\W]+$)(?![a-zA-Z]+$)[a-zA-Z0-9\\S]{8,16}$";
    //public static final String PW_PATTERN_TWO = "^(?![A-Z]+$)(?![a-z]+$)(?![0-9]+$)(?![\\W]+$)(?![a-zA-Z]+$)[a-zA-Z0-9\\S]{8,16}$";
    //public static final String PW_PATTERN_TWO = "^(?![A-Z]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,16}$";
    //8-20位,至少包含数字、小写字母、大写字母
    public static final String PW_PATTERN_THREE = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?!^.*[\\u4E00-\\u9FA5].*$)(?=\\S+$).{8,20}$";

     public static void main(String[] args) {
         System.out.println("fffffffF".matches(PW_PATTERN_TWO));
     }
    public static boolean checkPw(String password, String regex) {
        return password.matches(regex);
    }

    /**
     * 第一种
     *
     * 至少8-16个字符,至少1个大写字母,1个小写字母和1个数字,其他可以是任意字符:
     *
     *  /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/
     *
     * /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\s\S]{8,16}$/
     *
     * 其中 [\s\S] 中的\s空白符,\S非空白符,所以[\s\S]是任意字符。也可以用 [\d\D]、[\w\W]来表示。
     *
     * 至少8个字符,至少1个大写字母,1个小写字母和1个数字,不能包含特殊字符(非数字字母):
     *
     * ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
     *
     * 至少8个字符,至少1个字母,1个数字和1个特殊字符:
     *
     * ^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$
     *
     * 至少8个字符,至少1个大写字母,1个小写字母和1个数字:
     *
     * ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
     *
     * 至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:
     *
     * ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}
     *
     * 最少8个最多十个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:
     *
     * ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10}
     *
     * 第二种
     *
     * ^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$
     *
     * 至少1个大写字母English letter,(?=.*?[A-Z])
     *
     * 至少1个小写英文字母,(?=.*?[a-z])
     * 至少1位数字,(?=.*?[0-9])
     * 至少有1个特殊字符,(?=.*?[#?!@$%^&*-])
     * 最小8个长度.{8,}
     * 第三种
     *
     * 正则表达式没有AND运算符,所以编写正则表达式与有效密码匹配是非常困难的,当有效性被某些东西和其他东西等定义时…
     *
     * 但是,正则表达式确实有1个OR运算符,所以只需应用DeMorgan的定理,并编写1个与无效密码相匹配的正则表达式:
     *
     * 任何少于8个字符或任何没有数字或任何没有大写字母或任何没有小写字母或任何没有特殊字符的任何东西。
     *
     * 所以:^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$,如果有什么匹配的话,这是1个无效的密码。
     *
     * 第四种
     *
     * 由于特殊字符仅限于键盘中的特殊字符,因此可用于任何特殊字符:
     *
     * ^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
     *
     * 这个正则表达式将强制执行这些规则:
     * – 至少1个大写英文字母
     * – 至少1个小写英文字母
     * – 至少1位数字
     * – 至少1个特殊字符
     * – 最少8个长度
     *
     * 第五种
     *
     * 根据我的情况,我遇到了最受欢迎的答案。例如,我的验证失败,其中包含;或[等字符。我对 white-listing 我的特殊字符不感兴趣,
     * 所以我用[^\w\s]作为测试 – 简单地把非字符(包括数字)和非空格字符放在一起。总而言之,这是对我有用的
     *
     * 至少8字符
     * 至少1数字字符
     * 至少1小写字母
     * 至少1大写字母
     * 至少1特殊字符
     * /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/ 简单演示涵盖各种情况
     *
     * 第六种
     *
     * 导入JavaScript文件jquery.validate.min.js。
     *
     * 您可以使用此方法:
     *
     * JavaScript 代码:
     * $.validator.addMethod("pwcheck", function (value) {
     * return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value)
     * });
     * 至少1个大写英文字母
     * 至少1个小写英文字母
     * 至少1位数字
     * 至少1个特殊字符
     * 第七种
     *
     * 尝试这个:
     * – 最少6个字符
     * – 至少有1个大写字符
     * – 至少1个小写字符
     * – 至少1个特殊字符
     *
     * 表达式:
     *
     * /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.]{6, 20}/
     *
     * 可选特殊字符:
     *
     * 至少1个特殊字符
     * 至少1个数字
     * 特殊字符是可选的
     * 最少6个字符,最多16个字符
     * 表达式:
     *
     * /^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$/
     *
     * 如果不需要最小和最大条件,则删除.{6, 16}
     * – 6是最小字符数限制
     * – 20是最大字符限制
     * – ?=表示匹配表达式
     */
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值