Java正则表达式

package com.hikvision.cms.vss;

import java.util.regex.Pattern;

public class PwdTest {

    public static void main(String[] args) {
        // (一) 首先将密码输入分为数字,小写字母,大写字母,特殊符号4类,等级分为4个等级,具体如下:
        //  等级0(风险密码):密码长度小于8位,或者只包含4类字符中的任意一类,或者密码与用户名一样,或者密码是用户名的倒写。
        //  等级1(弱密码):包含两类字符,且组合为(数字+小写字母)或(数字+大写字母),且长度大于等于8位。
        //  等级2(中密码):包含两类字符,且组合不能为(数字+小写字母)和(数字+大写字母),且长度大于等于8位。
        //  等级3(强密码):包含三类字符及以上,且长度大于等于8位。
        //
        getPwdRank("admin", "112111");
        getPwdRank("admin", "112111111111122");
        getPwdRank("admin", "1ssssssssszz");
        getPwdRank("admin", "123456AAAAAAAAAAAAAA");
        getPwdRank("admin", "ZZZZZZzzz");
        getPwdRank("admin", "123456ZddZZZZZZZZZZZ");
        getPwdRank("admin", "y123456dddddd#");
        getPwdRank("admin", "ZZZZZZzzz#");

    }

    private static int getPwdRank(String userName, String pwd) {
        int rank = 0;
        if (pwd.length() < 8 || userName.equals(pwd) || pwd.equals(new StringBuffer(userName).reverse().toString())) {
            System.err.println(" 等级 " + rank + " 密码:    " + pwd);
            return rank;
        }
        boolean hasSpecial = Pattern.compile("[-~!@#$%^&*()\\{\\}\\[\\]:\\.]+").matcher(pwd).find();
        boolean hasSmallWord = Pattern.compile("[a-z]+").matcher(pwd).find();
        boolean hasBigWord = Pattern.compile("[A-Z]+").matcher(pwd).find();
        boolean hasNum = Pattern.compile("[0-9]+").matcher(pwd).find();
        int wordsKind = 0;
        if (hasNum) {
            wordsKind++;
        }
        if (hasBigWord) {
            wordsKind++;
        }
        if (hasSmallWord) {
            wordsKind++;
        }
        if (hasSpecial) {
            wordsKind++;
        }
        // 等级0(风险密码):密码长度小于8位,或者只包含4类字符中的任意一类,或者密码与用户名一样,或者密码是用户名的倒写。
        if (wordsKind == 1) {
            rank = 0;
        } else if (wordsKind == 2) {
            // 等级1(弱密码):包含两类字符,且组合为(数字+小写字母)或(数字+大写字母),且长度大于等于8位。
            if (hasNum && (hasBigWord || hasSmallWord)) {
                rank = 1;
            } else {
                // 等级2(中密码):包含两类字符,且组合不能为(数字+小写字母)和(数字+大写字母),且长度大于等于8位。
                rank = 2;
            }
        } else {
            // 等级3(强密码):包含三类字符及以上,且长度大于等于8位。
            rank = 3;
        }
        System.err.println(" 等级 " + rank + " 密码:    " + pwd);
        return rank;
    }
}

 等级 0 密码:    112111
 等级 0 密码:    112111111111122
 等级 1 密码:    1ssssssssszz
 等级 1 密码:    123456AAAAAAAAAAAAAA
 等级 2 密码:    ZZZZZZzzz
 等级 3 密码:    123456ZddZZZZZZZZZZZ
 等级 3 密码:    y123456dddddd#
 等级 3 密码:    ZZZZZZzzz#
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值