За последние 24 часа нас посетили 20176 программистов и 1552 робота. Сейчас ищут 1674 программиста ...

Регулярное выражение для float

Тема в разделе "Регулярные выражения", создана пользователем topmuffinsecret, 17 ноя 2010.

  1. topmuffinsecret

    topmuffinsecret Активный пользователь

    С нами с:
    17 ноя 2010
    Сообщения:
    2
    Симпатии:
    0
    Ребят, помогите, плиз с составлением регулярки для Float
    Она НЕ должна пропускать
    00.0
    -0.0
    .435
    -.6
    и должна пропускать
    0.0
    1.0000000
    0.64
    -42.42
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    в порядке бреда:
    (((-[1-9])([0-9]+)?)|(([1-9]+)?[0-9]))\.[0-9]+
     
  3. topmuffinsecret

    topmuffinsecret Активный пользователь

    С нами с:
    17 ноя 2010
    Сообщения:
    2
    Симпатии:
    0
    Спасибо! но все же проблема с числами типа -0.98 и подобными остается.
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Как ни странно, но на основе этой регулярки можно сделать рабочий скрипт. Только как-то очень бредово получается. =))
    PHP:
    1. <?php
    2. $pattern='#(((-[1-9])([0-9]+)?)|(([1-9]+)?[0-9]))\.([0-9]+)#';
    3. $arr[]="0";
    4. $arr[]="45.45";
    5. $arr[]="0.765";
    6. $arr[]="0.09876";
    7. $arr[]="0.6.7";
    8. $arr[]="-0.67";
    9. $arr[]=".89";
    10. $arr[]="00.89";
    11. $arr[]="-.98";
    12. $arr[]="1.0000000";
    13. $arr[]="-45.45";
    14.  
    15. foreach($arr as $test){
    16.     if (preg_match($pattern, $test, $m)){
    17.         if ((string)$test===$m[0]){
    18.             echo $test."<br>";
    19.         }
    20.     }
    21. }
    22.  
     
  5. kombain

    kombain Активный пользователь

    С нами с:
    28 авг 2010
    Сообщения:
    50
    Симпатии:
    0
    Не очень понятно какие критерии отбора одних цифр и других. Зачем вообще это надо если они и там и там являются float
     
  6. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Думаю, речь идёт о том, чтобы не было отрицательного нуля
    /^-?[1-9]\d*\.\d+|0\.\d+|-0\.\d*[1-9]\d*$/
    Не тестил но надеюсь сработает