Как и другие считают, что регулярное выражение - не лучший способ работы с числами.
Вы можете добавить дополнительные простые проверки диапазона к приведенному ниже коду, если это необходимо, и это будет значительно быстрее, чем пытаться сделатьэто с регулярным выражением
<?php
$a = array(
1209,
1889.0,
578247.00,
75646.50,
44565.12
);
foreach ($a as $b) {
echo "$b - ";
echo ($b*100 % 50) == 0 ? 'PASS' : 'FAIL';
echo PHP_EOL;
}