Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: регулярное выражение для int и float чисел
Форумы портала PHP.SU » PHP » Регулярные выражения » регулярное выражение для int и float чисел

Страниц (1): [1]
 

1. dimonx3 - 03 Августа, 2011 - 18:47:46 - перейти к сообщению
Это 100% уже делали, но никак не смог найти. Помогите пожалуйста.
Задача такова с textarea нужно выбрать числа разделенные ";" . Числа могут быть положительные, отрицательные, целые, дробные.

Пример: -1.5; 0; 1.55; 2; и т.д

Я написал: [-+]?[0-9]+\.?[0-9]*;

Но если написать 00.5; ,то оно тоже попадет. То есть надо доделать что бы если число до точки ноль, то больше символов рядом с ним до точки не было.
2. Мелкий - 03 Августа, 2011 - 19:34:55 - перейти к сообщению
3. illy - 05 Августа, 2011 - 09:34:45 - перейти к сообщению
[-+]?[0-9]{0,1}\.?[0-9]*;
4. EuGen - 05 Августа, 2011 - 09:44:35 - перейти к сообщению
Мелкий пишет:
if_float, is_int

Не пойдет, так как

Можно проверять вещественные числа при помощи, скажем, is_number.
Или сделать что-то вроде:
PHP:
скопировать код в буфер обмена
  1. (string)((int)($var))===$var;
  2. (string)((double)($var))===$var;

Однако тоже не всегда будет работать (например, если $var='5.500');

В общем случае лучше написать валидатор для типов данных, или и в самом деле использовать регулярное выражение.
http://www[dot]regular-expressions[dot]i[dot][dot][dot]oatingpoint[dot]html
5. dimonx3 - 05 Августа, 2011 - 09:49:11 - перейти к сообщению
illy пишет:
[-+]?[0-9]{0,1}\.?[0-9]*;

ок:
00.5; ваше выражение найдет 0.5;

но вы не учли такое:
11.5; ваше выражение найдет 1.5;

то есть надо доделать что бы если число до точки ноль, то больше символов рядом с ним до точки не было.
6. Мелкий - 05 Августа, 2011 - 09:59:08 - перейти к сообщению
EuGen пишет:
Не пойдет, так как

is_float пойдёт, он лопает числовые строки.
А вот для проверки int-овой числовой строки нету функции Огорчение Можно так:
PHP:
скопировать код в буфер обмена
  1. $string="12";
  2. var_dump((is_numeric($string) && intval($string)==$string));

 

Powered by ExBB FM 1.0 RC1