0

パスワード検証用の正規表現があります( 追加の特殊文字を使用したパスワード検証用の正規表現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+、「スペース以外の任意の文字」を意味します。 .それを満たします。$3 番目の疑似条件 (先読み) を満たすために も必要です。.その中にはありませんが、$あります。

編集: ピリオドがまったく必要ない場合は、最後の疑似条件を次のように変更します。(?=[^\\s.]+$)

于 2013-05-10T13:40:04.470 に答える