こんにちは、次のような文字の組み合わせを形成したい
アルファベット、数字の組み合わせ(2) 特殊文字(1) 最小 6 文字
使ってみた
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,})
しかし、上記のように組み合わせることはできませんでした。
あなたの正規表現は基本的にOKです。
使用している正規表現エンジンのタイプを提供していないため、Java や逐語的な文字列をサポートしない別の言語でない限り、に変更する必要がある場合があります。そうしない\\d
と\d
、正規表現のその部分がリテラルのバックスラッシュと一致しようとします、その後にd
.
また、パフォーマンスを向上させるために、正規表現を文字列の先頭に固定する必要があります。Java では、.matches()
メソッドが暗黙的にそれを行います。
次に、現在、正規表現には 1 桁しか必要ありませんが、2 つの ASCII アルファベット (1 つの小文字と 1 つの大文字) が必要です。それは本当にあなたが望むものですか?
私はあなたの要件を次のように解釈したでしょう:
if (subjectString.matches("(?=.*\\d.*\\d)(?=.*[A-Za-z])(?=.*[@#$%]).{6,}")) {
// Password matches the criteria
} else {
// Password doesn't match the criteria
}