密码复杂度验证

zhuc 2023-08-29 3288 阅读

java

 import java.util.regex.Pattern;

public class PasswordUtil {

    // 密码正则规则:必须包含 数字+大写+小写+特殊字符,长度8-30位
    private static final String PWD_REGEX = 
        "(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^a-zA-Z0-9]).{8,30}";

    /**
     * 校验密码是否符合规则
     * @param password 待校验密码
     * @return true=符合,false=不符合
     */
    public static boolean checkPassword(String password) {
        if (password == null || password.isEmpty()) {
            return false;
        }
        return Pattern.matches(PWD_REGEX, password);
    }

    // 测试
    public static void main(String[] args) {
        System.out.println(checkPassword("88888aaa"));      // false
        System.out.println(checkPassword("Aa123456!"));     // true
    }
}

C#

  public static bool IsLongPass(string password)
        {
            var regex = new Regex(@"
    (?=.*[0-9])                     #必须包含数字
    (?=.*[a-z])                  #必须包含小写字母
    (?=.*[A-Z])                  #必须包含大写字母
    (?=([\x21-\x7e]+)[^a-zA-Z0-9])  #必须包含特殊符号
    .{8,20}                         #至少8个字符,最多20个字符
    ", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
            //校验密码是否符合
            return regex.IsMatch(password);
            
        }


js

 // 正确正则:必须包含 数字 + 大写字母 + 小写字母 + 特殊字符,长度8-30
var regex = new RegExp('(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^a-zA-Z0-9]).{8,30}');

// 测试用例(必须满足四项)
if (!regex.test("Aa123456!")) { 
    alert("密码强度不够。必须包含:大写字母、小写字母、数字、特殊字符,长度8-30");
} else {
    alert("密码符合要求");
}