1

任意の長さの文字列(実際にはパスワード)が次のようになっていることを表明するための単一のJava正規表現を探しています。

  • 少なくとも2つの小文字
  • 少なくとも2つの大文字
  • 少なくとも2つの数字
  • 文字または数字ではなく、少なくとも1文字

次のようなマッチで使用します。

password.matches("some regex");

ここでの「重要な」部分は、複数の文字タイプが存在する必要があるということです。私が見つけた他の質問は、文字タイプの「少なくとも2つ」ではなく、「少なくとも1つ」について話します。

複数のmatches()呼び出しで実行できますが、正規表現は単一の文字列として外部化されるため、への1回の呼び出しである必要がありますmatches()

4

1 に答える 1

4

理論的には、次のようなパターンを使用できます。

(?=.*[A-Z].*[A-Z])(?=.*[a-z].*[a-z])(?=.*\\d.*\\d)(?=.*[^A-Za-z\\d]).*

ただし、実際に使用する場合は、このような正規表現に頼るのではなく、適切なプログラミングに固執したいと思います。

于 2012-12-28T23:37:57.100 に答える