我有密码验证的正则表达式(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
答案 0 :(得分:0)
你有\\S+
,意思是“任何非太空角色”。 .
满足了这一点。您还需要$
来满足第三个伪条件(lookahead)。 .
不在其中,但$
是。
编辑:如果您根本不想要任何句号,请将最后一个伪条件更改为(?=[^\\s.]+$)