人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでpreg_match("/^\d+$/",$test)
この意味はどういう意味なんでしょうか?
正規表現の意味を教えてください。

●質問者: hopefully
●カテゴリ:就職・転職 コンピュータ
✍キーワード:PHP test 正規表現
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● mnis
●27ポイント

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

◎質問者からの返答

ありがとうございます。


2 ● b-wind
●27ポイント

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

◎質問者からの返答

ありがとうございます。


3 ● falcosapiens
●26ポイント

^は文字列の始まり。

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

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

$は文字列の終わり。

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

やっている内容は

ctype_digit($test)

とほぼ同じです。

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

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

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

◎質問者からの返答

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

ありがとうございます。


4 ● ushisama
●10ポイント

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

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

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

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

^ は行頭

\d は0-9までの数字

+ は一回以上の繰り返し

$ は行末を示します。

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

【例】

0123 -> 1を返す。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ