[PHP][バリデーション] パスワード 3種類のうち2種類使用のバリデーション

パスワードのバリデーション処理で複数種類のルールからいくつかを使用したかのチェック処理について。

やりたいこと

  1. 半角英字(大文字、小文字の区別をしない)
  2. 半角数字
  3. 記号(「!_@」のみ)

上記3種類のうち2種類以上を使用しているかを正規表現でチェックする。

/^.*((?=.*[A-Za-z])(?=.*[0-9])|(?=.*[A-Za-z])(?=.*[!_@])|(?=.*[0-9])(?=.*[!_@])).*$/

regex:https://regex101.com/r/cootWi/1

これを応用すれば半角大文字英字、半角小文字英字、半角数字から2種類以上などもできる。
文字のサイズを指定したい場合は{8,24}(8文字以上24文字以内)などを追加でもいいが、
フレームワークのバリデーション処理で別途文字数制約を加えた方がエラーメッセージを切り分けられるので
ここでは文字種以外については触れない。



PHPフレームワーク Laravel入門

PHPフレームワーク Laravel入門