PHPでpreg_match("/^\d+$/",$test)

この意味はどういう意味なんでしょうか?
正規表現の意味を教えてください。

回答の条件
  • 1人3回まで
  • 登録:2006/09/25 19:38:22
  • 終了:2006/09/26 14:00:52

回答(4件)

id:mnis No.1

mnis回答回数3ベストアンサー獲得回数02006/09/25 19:54:29

ポイント27pt

preg_match -- 正規表現検索を行う

preg_match(検索パターン, 検索対象文字列)

検索パターンの^は行頭、\dは0-9の数字、+は直前の1つ以上の繰り返し、$は行末です。

$testは検索対象の文字列。

preg_match()はカッコ内のpatternがマッチした回数を返します。

ということで、$test文字列に数字が一つでも含まれれば1、含まれなければ0を返します。

正規表現は、幾つかの文字列を一つの形式で表現するための表現方法です。

"Regular Expression" #1

http://www.sixnine.net/regexp/regexp1.html

正規表現メモ

http://www.kt.rim.or.jp/~kbk/regex/regex.html

id:hopefully

ありがとうございます。

2006/09/25 20:18:29
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402006/09/25 21:36:21

ポイント27pt

半角数字が1つ以上あり、かつほかの文字が入っていない行がある場合マッチする正規表現ですね。

id:hopefully

ありがとうございます。

2006/09/26 13:59:38
id:falcosapiens No.3

falcosapiens回答回数126ベストアンサー獲得回数132006/09/25 20:00:13

ポイント26pt

^は文字列の始まり。

\dは数字。[0-9]と同じ。

+は直前の正規表現の1以上の繰り返し。

$は文字列の終わり。

全体として,$testが数字だけで構成されているか否かを判別しています。

やっている内容は

ctype_digit($test)

とほぼ同じです。

ctype_digitの場合,$testが数字以外のものを含むと何も返さないのに対し,

ご質問の方法の場合は0を返すという違いはありますけれど。

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm

id:hopefully

こんな方法もあるんですね。

ありがとうございます。

2006/09/26 14:00:33
id:ushisama No.4

ushisama回答回数3ベストアンサー獲得回数02006/09/26 11:14:52

ポイント10pt

preg_matchはperlに準拠した正規表現であり、条件が一致すると1を返します。

不一致の場合は0を返します。

preg_match("/^\d+$/",$test)

の場合、$testには文字列が入っているはずです。/で囲まれた部分が正規表現で、

^ は行頭

\d は0-9までの数字

+ は一回以上の繰り返し

$ は行末を示します。

つまり上記正規表現は0-9までの文字列のみで構成された行がある場合一致して1を返します。そうでなければ0を返します。

【例】

0123 -> 1を返す。

012x -> 最後のxが条件と一致しないため0を返す。

  • id:mnis
    時間が経ってしまいましたが訂正です。「数字が一つでも含まれれば1」は誤りで、正しくは「0-9の数字だけならば1」です。また「行頭」「行末」も誤りで、正しくは「文字列の先頭」「文字列の終わり」です。正確でない回答をつけてしまい申し訳ございませんでした。

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

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

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

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