パスワードの検証に正規表現を使用するのは良い考えではないかもしれませんが、先読みと or 演算子を|
使用すると、これを行うことができます。
^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])).{8,32}$
この正規表現には 4 つの部分があります。
(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])
少なくとも 1 つの下位アルファ、1 つの上位アルファ、および 1 つの数字があることを確認します。
(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])(?=.*[a-z])(?=.*[0-9])
少なくとも 1 つの特殊文字、1 つの大文字、1 つの数字があることを確認します。
(?=.*[A-Z])(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])(?=.*[0-9])
少なくとも 1 つの大文字、1 つの特殊文字、および 1 つの数字があることを確認します。
(?=.*[A-Z])(?=.*[a-z])(?=.*[#$%=@!{},`~&*()'?.:;_|^/+\"-])
少なくとも 1 つの上部アルファ、1 つの下部アルファ、および 1 つの特殊文字があることを確認します。
|
これら 4 つ (非キャプチャ グループにグループ化) を使用すると、4 つのうち 3 つの検証が得られます。
次に.{8,32}
、パスワードの長さに使用します