質問: ``` if(preg_match("/[0-9]*/", $_GET['p'])) { 処理 } ``` PHPで、パラメータpの値が正の整数であるかを、正規表現で確かめたいのですが、上記コードで合ってますでしょうか? もう一つ質問なのですが、phpでの正規表現を調べると、`preg_match("/[0-9]*/", $_GET['p'])`のように、preg_matchの第1引数の`""`内にスラッシュが二つ含まれているのを見かけるのですが、これはphpでの仕様でしょうか?それとも、正規表現の仕様でしょうか?正規表現で調べてもスラッシュが出てこないので、phpでpreg_matchを使う際は、スラッシュで囲むのが決まりなのかなと思うのですが、合ってますでしょうか? お手数をお掛けしますが、ご教授のほど、よろしくお願いいたします。
回答: > > preg_match("/[0-9]*/", $_GET['p']) > > > * GETに必ず'p'という要素があるとは限らない * /[0-9]*/は正の整数ではない 正の整数は0を含まないので「/[1-9][0-9]*/」です。 > > スラッシュで囲むのが決まりなのかな > > > 正規表現の慣例でスラッシュで囲っていますが これはデリミタといってphpの正規表現の場合、特殊文字以外の 適当な文字で囲えば機能します 状況が許せば「@hoge@」とかで良いわけです ちなみにgetで受けたデータが正の整数かどうかチェックするならこう ``` ["min_range"=>1]]); if($p){ var_dump($p); } ?> ```