А если попробовать те значения, которые не прошли регулярное выражение, проверить функцией filter_var(). Если отфильтрует, значит значение числовое и можно дальше работать. А если нет – выдаст FALSE, значит отфильтровать не смог.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.