0

我有一个用于密码验证的正则表达式(用于 使用额外特殊字符进行密码验证的 Regexp Java )

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

这个问题是,如果我说

 "Xyz.123".matches(pattern);

这返回false

但是,如果我说

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

这返回true

'。' 在我的情况下不是有效的特殊字符。但是,如果我的密码具有有效的特殊字符以及“。” 它返回true

4

1 回答 1

0

你有\\S+,这意味着“任何非空格字符”。 .满足这一点。您还需要$满足第三个伪条件(前瞻)。 .不在其中,但$在。

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

于 2013-05-10T13:40:04.470 回答