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


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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/10/05 19:56:15
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:palo No.1

回答回数124ベストアンサー獲得回数14

ポイント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]なら()あり。
    というのが分かりました。

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

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

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

回答リクエストを送信したユーザーはいません