プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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文字以上混在)で登録して下さい";
}

関数にしておくと便利かもしれませんね。
(見やすくするため全角スペースが入っています。コピペ注意)
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/16 12:30

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/16 12:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!