パスワード検証でハイフンを許可したい場合は、以下のケースが
あります。 1. 大文字と小文字が混在している必要
があります
。(キーボードに表示されるのはそれだけです)。
作ったのです
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_'\"+={};:<>,.?/]).{8,32})
が、特殊文字セットにハイフンが含まれているhyphen
ので、どこに置くべきか。hyphen
-
文字クラスでハイフンを許可する必要があります。
この正規表現を試してください:
^(?=.*?\\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[!@#$%^&*()_'\"+={};:<>,.?/-]).{8,32})$
おそらく、すべてのチェックを一度に行う正規表現を作成できますが、代わりに次のアプローチをお勧めします。
private static boolean isPasswordValid(String password) {
boolean valid = true;
// at least one lowercased char
valid &= password.matches(".*[a-z].*");
// at least one uppercased char
valid &= password.matches(".*[A-Z].*");
// at least one digit
valid &= password.matches(".*[0-9].*");
// at least one special char
valid &= password.matches(".*[!@#$%^&*()_'\"+={};:<>,.?/-].*");
// length & no other char
valid &= password.matches("[a-zA-Z0-9!@#$%^&*()_'\"+={};:<>,.?/-]{8,32}");
return valid;
}