2015-01-25 2 views
1

мне нужно действительные числа между 0,00000001 и 999. я использовал preg_match:Почему это preg_match не работает

preg_match('/^[0-9]{1,3}(\.[0-9]{1,8})?$/',0.0000339); 

Но я не понимаю, почему он не работает. Если я напишу номер: 0.0001 это работает, но 0.00001 или 0.0000001 не работает, и 0.11111111 возвращает true. Вы можете проверить http://writecodeonline.com/php/ Почему?

+3

Почему бы вам не использовать нормальный, если заявление, как: 'если ($ число <= 999 && $ число> = 0,00000001)'? – Rizier123

+1

Поскольку вы не передаете строку preg_match, но разрешаете PHP преобразовать литерал float '0.0000339' в строку' 3.39E-5'. – mario

+0

Или '$ number <1000 && $ number> 0', если вы просто пытаетесь учесть очень маленькие положительные числа ... – Purag

ответ

-1

Это работа:

$number = 0.0000001; 
echo preg_match('/^[0-9]{1,3}(\.[0-9]{1,8})?$/',"$number"); 
+0

Нет, это не http://ideone.com/SX2F0x – zerkms

Смежные вопросы