• ベストアンサー

正規表現でIパスワードの作成内容をチェック

PHP初心者です。 特に正規表現は、あまり良く分かりません。 単一の条件は、なんとなく分かるのですが・・・よろしくお願いします。 ユーザーに任意のパスワードを作ってもいたいのですが、あまり簡単な文字列では良くない事から、入力された文字列にチェックをかけたいです。 条件は、半角英数で6文字以上、大文字小文字は区別します。 (記号は不可) また、必ず数字と英字をどちらか2文字以上混在させたいのですが、チェックをかける時にどの様な正規表現のパターンを組めばよいのか分かりません。 教えて頂けないでしょうか、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんな感じですかね。 if( ereg("^[a-zA-Z0-9]{6,10}$", $pass) ){  //半角英数字6-10文字 OK  while($pass[$i] != ""){   //各文字数カウント   if(ereg("[0-9]",$str[$i])) $num ++;   if(ereg("[a-zA-Z]",$str[$i])) $al ++;  $i++;  }  //各2文字以上なら $flg = 1  $flg = ($num >= 2 && $al >= 2)? 1 : 0 ; }else{  $flg = 0 ; } if ($flg == 1){  echo "OK"; }else{  echo "半角英数字6文字以上(必ず数字と英字をどちらか2文字以上混在)で登録して下さい"; } 関数にしておくと便利かもしれませんね。 (見やすくするため全角スペースが入っています。コピペ注意)

yoshi_t
質問者

お礼

回答ありがとうございます。 サンプルコードを書いて頂いてとても助かりました。 ソースを読ませて頂くと、なるほど!!と思うのですが、 まだまだ、自分で書き出すまでいたりません。 がんばって勉強します。 このソースを見てて思ったのですが、とても分かりやすいソースですね。 やりたい事を、ひとつひとつ分解して処理していく!? とても参考になりました。ありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

正規表現ではなくてプログラム的にチェックするのがいいかと思います。

yoshi_t
質問者

お礼

回答ありがとうございました。