java - 正则表达式不适用于密码

标签 java regex

我正在尝试使用这个正则表达式

.*[!@#$%^&*()].*[0-9]|[0-9].*[!@#$%^&*()].*

使我的密码至少包含 1 个特殊字符和 1 个数字(确实如此)。但我也试图让它接受像 mike1@ 这样的密码。

我该如何修改它,以便它也能采用这样的字母?

最佳答案

最好使用lookaheads来做到这一点。

^(?=.*[!@#$%^&*()])(?=.*[0-9])(?=.*[a-zA-Z]).*$

您的方法的问题是您必须涵盖所有可能的组合,其中字母在前,或数字在前。使用 lookahead 这是 0 宽度断言 只是一种检查,如果正则表达式甚至没有一个特殊字符数字字母,我们可能会失败。

(?=.*[a-zA-Z])

 ^^   ^^^^^^^

前瞻只是表明,要使该正则表达式通过,某处至少应该有一个字母

编辑:

^(?=.*[!@#$%^&*()])(?=.*[0-9]).*$

如果不存在字母约束,请使用此选项。

关于java - 正则表达式不适用于密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33254653/

相关文章:

java - 如何使用jdbc从eclipse连接到docker容器

python - 在 Pandas 的整个列中计算字符串的出现次数

java - unicode 格式的日语文本

java - 在方法中使用 java.util.Scanner 会导致运行时错误

java - 从具有给定行/列/表号的数据库样式表中获取数据的最佳方法 - Java

c# - 制作 C# RegEx 匹配返回意外数据

java - 将匹配 Java 方法声明的正则表达式

regex - $matches ["x"] 在 ISE 中工作,但在命令行 shell 中不起作用

c# - 确定字符串是否以空格结尾

JavaFX 表格 View 无法正确显示