Строки PHP в регулярных выражениях нуждаются в разделителях. Попробуйте:
$numpattern="/^([0-9]+)$/";
Также обратите внимание, что у вас строчный o, а не ноль. Кроме того, если вы просто проверяете, вам не нужна группа захвата, и вы можете упростить регулярное выражение до /^\d+$/
.
Пример: http://ideone.com/Ec3zh
См. Также: PHP - Разделители