パスワードの正規表現を使ったチェック
とりあえず、パスワードのチェック用の関数をメモ
正規表現で書いてみた
なお、記号を使う場合は考慮してない
check_gはかなり冗長なので別の方法を考えた方が良い
おそらく、通常使うのはcheck_hかcheck_iあたりだと思われる。
//全て許可 function check_a($password) { return true; } //数字だけを含む文字列を許可 function check_b($password) { $check_str1 = '(^([0-9])+$)'; if (preg_match($check_str1, $password) != 0 ) { return true; } return false; } //英子文字だけを含む文字列を許可 function check_c($password) { $check_str1 = '(^([a-z])+$)'; if (preg_match($check_str1, $password) != 0 ) { return true; } return false; } //英大文字だけを含む文字列を許可 function check_d($password) { $check_str1 = '(^([A-Z])+$)'; if (preg_match($check_str1, $password) != 0 ) { return true; } return false; } //数字または、英子文字または、英大文字のいずれかを含む文字列を許可 function check_e($password) { $check_str1 = '(^([0-9]|[a-z]|[A-Z])+$)'; if (preg_match($check_str1, $password) != 0 ) { return true; } return false; } //数字および英字のいずれも含む文字列を許可 function check_f($password) { $check_str1 = '( (^[0-9]+([0-9]|[a-z]|[A-Z])*([a-z]|[A-Z])+([0-9]|[a-z]|[A-Z])*$) '. '| (^([a-z]|[A-Z])+([0-9]|[a-z]|[A-Z])*[0-9]+([0-9]|[a-z]|[A-Z])*$) )'; if (preg_match($check_str1, $password) != 0 ) { return true; } return false; } //数字および英子文字および、英大文字のいずれも含む文字列を許可 function check_g($password) { $check_str1 = '( (^[0-9]+([0-9]|[a-z]|[A-Z])* [a-z]+([0-9]|[a-z]|[A-Z])* [A-Z]+([0-9]|[a-z]|[A-Z])*$) '. '| (^[0-9]+([0-9]|[a-z]|[A-Z])* [A-Z]+([0-9]|[a-z]|[A-Z])* [a-z]+([0-9]|[a-z]|[A-Z])*$) '. '| (^[a-z]+([0-9]|[a-z]|[A-Z])* [0-9]+([0-9]|[a-z]|[A-Z])* [A-Z]+([0-9]|[a-z]|[A-Z])*$) '. '| (^[a-z]+([0-9]|[a-z]|[A-Z])* [A-Z]+([0-9]|[a-z]|[A-Z])* [0-9]+([0-9]|[a-z]|[A-Z])*$) '. '| (^[A-Z]+([0-9]|[a-z]|[A-Z])* [0-9]+([0-9]|[a-z]|[A-Z])* [a-z]+([0-9]|[a-z]|[A-Z])*$) '. '| (^[A-Z]+([0-9]|[a-z]|[A-Z])* [a-z]+([0-9]|[a-z]|[A-Z])* [0-9]+([0-9]|[a-z]|[A-Z])*$) )'; if (preg_match($check_str1, $password) != 0 ) { return true; } return false; } //数字および英子文字および、英大文字のいずれも含む文字列を許可(分割版) function check_g2($password) { $check_str1 = '(^.*([0-9]))'; $check_str2 = '(^.*([a-z]))'; $check_str3 = '(^.*([A-Z]))'; if (preg_match($check_str1, $password) != 0 ) { if (preg_match($check_str2, $password) != 0 ) { if (preg_match($check_str3, $password) != 0 ) { return true; } } } return false; } //数字または、英子文字または、英大文字のいずれかを含む4〜8文字の文字列を許可 function check_h($password) { $check_str1 = '(^([0-9]|[a-z]|[A-Z]){4,8}$)'; if (preg_match($check_str1, $password) != 0 ) { return true; } return false; } //数字および英子文字および、英大文字のいずれも含む4〜8文字の文字列を許可 function check_i($password) { $check_str1 = '(^([0-9]|[a-z]|[A-Z]){4,8}$)'; $check_str2 = '(^.*([0-9]))'; $check_str3 = '(^.*([a-z]))'; $check_str4 = '(^.*([A-Z]))'; if (preg_match($check_str1, $password) != 0 ) { if (preg_match($check_str2, $password) != 0 ) { if (preg_match($check_str3, $password) != 0 ) { if (preg_match($check_str4, $password) != 0 ) { return true; } } } } return false; }
正規表現チップス
http://www110.kir.jp/study/jissen/script49.html
ちなみにこのあたりなんかはかなり参考になる・・・
追記:冗長なcheck_gをcheck_iの用に分割したバージョンとしてcheck_g2を追加
評価回数は多くなるがこちらの方が読みやすい