Java正则校验:密码必须由字母和数字组成,且大于等于8个字符。

需求

对登录密码进行校验,需要密码必须由字母和数字组成(同时包括数字和数字),且大于等于8个字符。

原理

使用正则表达式校验字符串。

正则表达式构建思路:

  1. 字符为数字或字母;
  2. 不能全是数字;
  3. 不能全是字母;
  4. 字符数量大于等于8.

核心代码

package org.example;

import java.util.regex.Pattern;

/**
 * 密码检查器。
 */
public class PasswordChecker {
    /**
     * 密码由数字和下划线组成,且大于等于8个字符。
     */
    public static boolean isCharacterAndNumber(String password) {
        String pattern = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,}$";
        return Pattern.matches(pattern, password);
    }
}

解释

需求 正则表达式
字符串开头 ^
字符为数字或字母 [0-9A-Za-z]
不全是数字 (?![0-9]+$)
不全是字母 (?![a-zA-Z]+$)
字符数量大于等于8 {8,}
字符串结尾 $

测试用例

示例代码

package org.example;

import static org.example.PasswordChecker.isCharacterAndNumber;

public class Main {
    public static void main(String[] args) {
        System.out.println(isCharacterAndNumber(""));
        System.out.println(isCharacterAndNumber("中文"));
        System.out.println(isCharacterAndNumber("abc-1234567"));
        System.out.println(isCharacterAndNumber("1234567"));
        System.out.println(isCharacterAndNumber("abc"));
        System.out.println(isCharacterAndNumber("zzz111"));
        System.out.println(isCharacterAndNumber("zzz12345"));
        System.out.println(isCharacterAndNumber("abc1234567"));
        System.out.println(isCharacterAndNumber("abc12345bbb"));
    }
}

运行结果

Java正则校验:密码必须由字母和数字组成,且大于等于8个字符。_第1张图片

Gitee示例项目(idea)

密码检查器

参考

java正则校验,密码必须由字母和数字组成

你可能感兴趣的:(java)