web-dev-qa-db-ja.com

PHP正規表現:終了デリミタ '^'が見つかりません

正規表現に問題があります。

これは私のコードです

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

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

私はそれを実行して取得します:

警告:preg_match()[function.preg-match]:終了デリミタ '^'が見つかりません

81
fingerman

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

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

また、ゼロではなく小文字のoがあることに注意してください。さらに、検証だけを行う場合は、キャプチャグループは必要なく、正規表現を/^\d+$/

例: http://ideone.com/Ec3zh

参照: PHP-Delimiters

131
Kobi

正規表現パターンは区切り文字である必要があります。

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

T-Regx library を使用できます。区切り文字は不要です

pattern('^([0-9]+)$')->match($input);
0
Danon