おバカな正規表現

小文字, 大文字, 数字, 記号の3種類以上を含む文字列にマッチする正規表現

素直にバリデーション関数を作りましょう

小文字とは
[a-z]

大文字とは
[A-Z]

数字とは
[0-9]

記号とは
/*-+.,!#$%&()~|_@[]
[/*\-+.,!#$%&()~|_@\[\]]

小文字, 大文字, 数字, 記号のいずれか
[a-zA-Z0-9/*\-+.,!#$%&()~|_@\[\]]

すべてを含む(肯定先読みの場合)
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[/*\-+.,!#$%&()~|_@\[\]])[a-zA-Z0-9/*\-+.,!#$%&()~|_@\[\]]*$

1. 小文字大文字数字を含む
^(?=.*([a-z]))(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9/*\-+.,!#$%&()~|_@\[\]]*$
aaaAAA111
AAA111aaa
111aaaAAA

2. 大文字数字記号を含む
^(?=.*[A-Z])(?=.*[0-9])(?=.*[/*\-+.,!#$%&()~|_@\[\]])[a-zA-Z0-9/*\-+.,!#$%&()~|_@\[\]]*$
BBB222!!!
222!!!BBB
BBB222!!!

3. 小文字数字記号を含む
^(?=.*[a-z])(?=.*[0-9])(?=.*[/*\-+.,!#$%&()~|_@\[\]])[a-zA-Z0-9/*\-+.,!#$%&()~|_@\[\]]*$
ccc333@@@
333@@@ccc
@@@ccc333

4. 小文字大文字記号を含む
^(?=.*[a-z])(?=.*[A-Z])(?=.*[/*\-+.,!#$%&()~|_@\[\]])[a-zA-Z0-9/*\-+.,!#$%&()~|_@\[\]]*$
dddDDD###
DDD###ddd
###dddDDD

1 or 2 or 3 or 4
(^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9/*\-+.,!#$%&()~|_@\[\]]*$|^(?=.*[A-Z])(?=.*[0-9])(?=.*[/*\-+.,!#$%&()~|_@\[\]])[a-zA-Z0-9/*\-+.,!#$%&()~|_@\[\]]*$|^(?=.*[a-z])(?=.*[0-9])(?=.*[/*\-+.,!#$%&()~|_@\[\]])[a-zA-Z0-9/*\-+.,!#$%&()~|_@\[\]]*$|^(?=.*[a-z])(?=.*[A-Z])(?=.*[/*\-+.,!#$%&()~|_@\[\]])[a-zA-Z0-9/*\-+.,!#$%&()~|_@\[\]]*$)