回答:
PHP正規表現文字列には区切り文字が必要です。試してください:
$numpattern="/^([0-9]+)$/";
また、ゼロではなく小文字のoがあることに注意してください。さらに、検証するだけの場合は、キャプチャグループは不要であり、正規表現をに簡略化でき/^\d+$/
ます。
参照:PHP-区切り文字
[
、]
区切り記号を使用してください。そうしないと、パターン自体との競合に遭遇します。
区切り文字を必要としないT-Regxライブラリを使用できます
pattern('^([0-9]+)$')->match($input);