Значение перед десятичной дробью должно быть меньше 10 цифр
Этот шаблон допускает от нуля до 9 цифр, а затем дополнительно разрешает десятичную точку, за которой следует неограниченное количество цифр.
Если ваше требование - иметь хотя бы один di git перед десятичной дробью, а затем изменить {0-9}
на {1,9}
.
Если ваше требование должно иметь от нуля до десяти цифр перед десятичной дробью, измените * От 1011 * до {0,10}
.
Код: ( Демо )
$tests = [
'12345678901',
'1234567890',
'123456789',
'1234567890.1',
'1234567.8901',
'1234.5678901',
'1.2345678901',
'.12345678901',
];
foreach ($tests as $test) {
var_export([$test, (bool)preg_match('~^\d{0,9}(?:\.\d+)?$~', $test)]);
echo "\n";
}
Вывод:
array (
0 => '12345678901',
1 => false,
)
array (
0 => '1234567890',
1 => false,
)
array (
0 => '123456789',
1 => true,
)
array (
0 => '1234567890.1',
1 => false,
)
array (
0 => '1234567.8901',
1 => true,
)
array (
0 => '1234.5678901',
1 => true,
)
array (
0 => '1.2345678901',
1 => true,
)
array (
0 => '.12345678901',
1 => true,
)