0

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

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

我正在尝试为密码创建一个 6 个字母长、一个数字和一个大写字母的正则表达式

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

4

4 回答 4

3

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

于 2012-08-02T14:51:18.237 回答
3

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

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

我也更改d\\ds\\s

这表示:

(?=.*[a-zA-Z]) [a-zA-Z] 中至少有一个字符
(?=.*\d) 至少一位数。
(?=.*[^a-zA-Z0-9\s]) 至少有一个字符不在 [a-zA-Z0-9\s] 中
.{6,} 至少 6 个字符。
于 2012-08-02T14:52:12.933 回答
1

试着把它放在一行中:

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

我想这会对你有所帮助。

于 2012-08-02T15:02:19.963 回答
0

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

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

^(?=.*[A-Z])(?=.*\d).{6}$
 ↑          ↑       ↑
 │          │       six characters in total
 │          at least one digit
 at least one upper-case letter
于 2012-08-02T14:53:40.313 回答