用于密码验证的java中的正则表达式

时间:2012-08-02 14:47:33

标签: java regex validation

我使用正则表达式进行密码验证: 这个正则表达式不是由我创造的..

 public final Pattern PASSWORD = Pattern.compile("[(?=.*[a-zA-Z])]"
                + "[(?=.*d)]" + "[(?=.*[^a-zA-Z0-9s])]" + "[.{6s,}]");

我试图创建一个正则表达式  密码长度为6个字母,一个数字和一个大写字母

我不知道如何阅读正则表达式... 建议一些学习正则表达式的教程 模式PASSWORD满足我的条件.. 如果没有那么我需要在我的正则表达式中进行哪些更改

4 个答案:

答案 0 :(得分:3)

我用谷歌搜索的第一件事显示了使用正则表达式验证密码的示例:http://www.mkyong.com/regular-expressions/how-to-validate-password-with-regular-expression/

答案 1 :(得分:3)

主要问题是你的表达式周围有字符类[...]。这可能会更好:

"^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9\\s]).{6,}"

我还将d更改为\\d,将s更改为\\s

这意味着:

(?=.*[a-zA-Z])        At least one character in [a-zA-Z]
(?=.*\d)              At least one digit.
(?=.*[^a-zA-Z0-9\s])  At least one character that's not in [a-zA-Z0-9\s]
.{6,}                 At least 6 characters.

答案 2 :(得分:1)

尝试将其放在一行中:

((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,})

我认为这会对你有帮助。

答案 3 :(得分:0)

无论你拥有什么,都非常非常奇怪。我不会在这里详细介绍,因为Pshemo在评论中指出的教程更适合这一点。

根据您的要求,您可以使用

^(?=.*[A-Z])(?=.*\d).{6}$
 ↑          ↑       ↑
 │          │       six characters in total
 │          at least one digit
 at least one upper-case letter