java - 密码模式匹配失败

标签 java regex

我的密码条件是,最少8个字符,最少1个特殊字符,最少1个数字

为此我编写了一个简单的类来验证,但最终失败了。

非常感谢任何帮助。

public class PasswordVerifier {
    private static final String SPECIAL_CHARACTERS = "(`~!@#$%^&*()_+=-][;'/.,\\<>?|:\"}{)";

    public static void main(String... args) {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        try {
            String password = in.readLine();
            if(!password.matches("^.*(?=.{8,})(?=.*[0-9])(?=.*[SPECIAL_CHARACTERS]).*$")){
                System.out.println("Password does not satisfy compliant");
            } else {
                System.out.println("Yes.. gets through");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

最佳答案

这可能适合您的要求:

private static final String SPECIAL_CHARACTERS = "(`~!@#$%^&*()_+=-\\]\\[;'/.,\\<>?|:\"}{)";

public static void main(String[] args) {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    try {
        String password = in.readLine();
        if(!password.matches("((?=.*\\d)(?=.*["+SPECIAL_CHARACTERS+"]).{8,})")){
            System.out.println("Password does not satisfy compliant");
        } else {
            System.out.println("Yes.. gets through");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

正则表达式指定:

  • 输入内容必须包含 0-9 之间的一位数字
  • 必须包含您定义的 SPECIAL_CHARACTERS 列表中的一个特殊符号
  • 长度应至少为 8 个字符

关于java - 密码模式匹配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337013/

相关文章:

java - 这两种查找随机数的方法之间的区别?

java - 使用 SSL java 客户端连接到 Tibco EMS

c# - 使用 ffmpeg 和正则表达式获取 'location' 的视频

c# - 每个关键字都需要存在

c# 如何使用 Regex.IsMatch 检查每一行

仅第二次出现时的正则表达式

java - 无法识别 IntelliJ : why my android. 支持包?

java - 是否可以使用 JDBC 持久保存 POJO?

Java ActiveMQ 客户端接收消息失败

python 正则表达式 : match a char surrounded by exactly 2 chars