正規表現 phpで、1,2,4の3つの数字のどれかに該当するかどうかを正規表現で判定したいのですが、下記コードではうまく表現できませんでした。どのように記述したらいいのでしょうか?


preg_match("/^[124]$/", $user_input, $match)

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/10/05 18:44:56
  • 終了:2009/10/05 19:56:15

ベストアンサー

id:palo No.1

palo回答回数124ベストアンサー獲得回数142009/10/05 18:59:17

ポイント60pt

書かれているコードでまちがっていないと思います。

ひょっとしたら、$user_input の前後に空白文字などの余分な文字列が

付加されているのかもしれません。

下のようにすればどうでしょうか?

$user_input = trim($user_input);

preg_match("/^[124]$/", $user_input, $match);


http://jp.php.net/manual/ja/function.preg-match.php

id:nagayaki

ひょっとしたら、他に原因があるのでしょうか?

if(isset($user_input)){

$user_input = trim($user_input);

if (preg_match("/^[124]$/",$user_input,$match)){

return $match[1];

} else{

die("入力値は数字の1,2,4で構成してくださるようお願いいたします");

}

}else{

die("変数が存在しません。");

}

2009/10/05 19:09:36
  • id:palo
    $match[1] にマッチしたパターンを記録するのなら、
    preg_match("/^([124])$/",$user_input,$match)
    のようにします。
  • id:nagayaki
    paloさんありがとうございます。

    正規表現初めてで、とても勉強になりました。$match[0]なら()なし。$match[1]なら()あり。
    というのが分かりました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません