Или я ничего не понимаю, или встретив одну цифру в subject, эта функция вернёт не 0, т.е. истину.int preg_match (string pattern, string subject [, array matches [, int flags]])
Ищет в subject совпадения с регулярным выражением, заданным в pattern.
Если matches предоставлен, он заполняется результатами поиска. $matches[0] будет содержать текст, совпавший со всем патэрном, $matches[1] будет содержать текст, совпавший первым захваченным субпатэрном в скобках, и так далее.
Т.е., можно и такую маску задать, но тогда нужно менять условия или инклюдить уже не переменную, а результаты функции (которые ещё выбрать нужно правильно).
Т.е., кроме самого регулярника нужно ещё учитывать что же оно реально делает в функции.