MENU

包含数字大小写字母特殊字符且不少于8位的正则

July 31, 2018 • Read: 157 • Java

验证方法:

/**
 * 密码长度8到16位
 * 包含数字
 * 包含大写字母
 * 包含小写字母
 * 包含特殊字符
 */
public static boolean validatePassword(String password) {
    if (StringUtils.isBlank(password)) {
        return false;
    }
    Pattern pattern = Pattern.compile("(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\\w\\s]).{8,16}");
    Matcher matcher = pattern.matcher(password);
    return matcher.matches();
}

单元测试:

@Test
public void passwordRegTest1() {
    Assert.assertTrue(JVMTest.validatePassword("abc123"));
}

@Test
public void passwordRegTest2() {
    Assert.assertTrue(JVMTest.validatePassword("Abc12345"));
}

@Test
public void passwordRegTest3() {
    Assert.assertTrue(JVMTest.validatePassword("12345@@@"));
}

@Test
public void passwordRegTest4() {
    Assert.assertTrue(JVMTest.validatePassword("Abc@1234Abc@12345"));
}

@Test
public void passwordRegTest5() {
    Assert.assertTrue(JVMTest.validatePassword("Abc@1234"));
}
Last Modified: July 31, 2019