
package com.tmerclub.cloud.common.util;


import com.tmerclub.cloud.common.exception.LuckException;

import java.util.regex.Pattern;

/**
 * 密码检验
 * @author YXF
 */
public class PasswordUtil {

    /**
     * 密码由字母、数字和特殊符号三种字符组成8-20位半角字符，区分大小写(检验时)
     */
    private static final Pattern PASSWORD_PATTERN = Pattern.compile("^(?=.*[a-zA-Z])(?=.*\\d)(?=.*(\\W|_))[A-Za-z\\d(\\W|_)]{8,20}$");

    public static void check(String password) {
        if (!checkFormat(password)) {
            // 这个异常是提示前端的，要在页面判断密码格式是否正确
            throw new LuckException("密码由字母、数字和特殊符号三种字符组成8-20位半角字符，区分大小写");
        }
    }

    public static boolean checkFormat(String password) {
        return PASSWORD_PATTERN.matcher(password).matches();
    }

}
