JAVA Regex用于密码验证问题

时间:2013-05-10 13:21:03

标签: java regex

我有密码验证的正则表达式(Regexp Java for password validation 有额外的特殊字符)

String pattern ="^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=!\\*_?|~(){}/<>:\"\',\\[\\]`;\\\\\\\\-])(?=\\S+$).{8,}$";

这个问题是, 如果我说

 "Xyz.123".matches(pattern);

这会返回false

但是,如果我说

  "Xyz.123$".matches(pattern);

这会返回true

''在我的情况下,它不是有效的特殊字符。但是如果我的密码有一个有效的特殊字符和'。'它返回true

1 个答案:

答案 0 :(得分:0)

你有\\S+,意思是“任何非太空角色”。 .满足了这一点。您还需要$来满足第三个伪条件(lookahead)。 .不在其中,但$是。

编辑:如果您根本不想要任何句号,请将最后一个伪条件更改为(?=[^\\s.]+$)