実現したいこと
パスワードの正規表現で下記を条件を満たす記述を知りたいです。
英語大文字、小文字、数字の3種類から少なくとも2種類含む。かつ12字以上32文字以下
例:Exampleeeeee
example00001
EXAMPLE00001
試したこと
私が正規表現に疎く、下記の様な
英語大文字、小文字、数字の3種類をすべて1文字以上含む。かつ12字以上32文字以下
でしたら記述できるのですが(間違っているかもしれませんが)
3種類の中から2種類以上を含むという書き方が調べてもいまいちわかりません。
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{12,32}$
そもそもこのような3種類の中から少なくとも2種類を含むというポリシーを正規表現で表現できるのか
その場合どのように書けば良いのか教えていただきたく存じます。
よろしくお願いいたします。
パスワードの正規表現を調べれば簡単にみつかることではありますが、そもそも正規表現一つでどうにかせず三回スキャンすれば済む話だと思います。
できなくはありませんが、
'^((?=.*[0-9])(?=.*[a-z])|(?=.*[0-9])(?=.*[A-Z])|(?=.*[a-z])(?=.*[A-Z]))[0-9a-zA-Z]{12,32}$'
条件を分解して(文字列長の制限、各文字種の含有数)、チェックする方がよいのではないでしょうか。
>Zuishin様
書き方については載っていますが条件を組み合わせたり分解するのが苦手でうまく見つけることが
できませんでした、、。申し訳ないです。
知識不足で申し訳ございません。3回スキャンとはどういう意味でしょうか。
少し調べてみましたがいまいちわからないです、、。
>melian様
なるほど。
正規表現を使って無理やり書こうとすると、英大文字+英小文字 or 英大文字+数字 or 英小文字+数字で書けば行けるんですね。
文系出身で数学とかも全く触れてこなかった私なので、その発想に至りませんでした。
英大文字、小文字、数字のそれぞれがあるかどうか三回に分けて調べるということです。
>Zuishin様
英大文字
→True
小文字
→True
数字
→false
みたいな感じで調べてtrueの数が2回以上あれば良いみたいな感じですか?
イマイチわかっていないのですが、少し調べてみます。

タイトル「8文字以上」と本文「12字以上32文字以下」が違いますけど?
>SurferOnWww
表記を誤っておりました。修正いたしました。

> 表記を誤っておりました。修正いたしました。
ならば上の melian さんのコメントの正規表現で良さそうですが、確認してみましたか? 言語は何ですか?
