2011-01-08 18 views
53

正規表現に問題があります。PHPの正規表現:終了デリミタ '^'がありません。

これは私のコード

$pattern = "^([0-9]+)$"; 

if (preg_match($pattern, $input)) 
    echo "yes"; 
else 
    echo "nope"; 

である私はそれを実行して取得:

警告:するpreg_match()[function.pregマッチ]:いいえ、終了区切り文字は '^'

に見つかりません

答えて

91

PHPの正規表現文字列には区切り文字が必要です。試してみてください:

$numpattern="/^([0-9]+)$/"; 

また、小文字は0で、ゼロではありません。さらに、検証するだけの場合は、キャプチャグループが不要で、正規表現を簡略化して/^\d+$/にすることができます。

例:またhttp://ideone.com/Ec3zh

参照:PHP - Delimiters

+0

、使用 '['と '] '区切り文字でなければ、パターン自体と競合します。 – greenoldman

13

あなたの正規表現パターンが区切り文字にする必要があります:リンク資料を読んでいない人のために

$numpattern="/^([0-9]+)$/"; 
関連する問題