Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [regexp] limitowany float
Forum PHP.pl > Forum > PHP
siurek22
witam chce zrobic wyrazenie regexp przepuszczajace liczby zmiennoprzecinkowe o zadanej dlugosci
samo wyrazenie na float "(\d+((\.|\,)\d+)?)" aby ograniczyc zrobilem tak "(\d+((\.|\,)\d+)?){1,5}" ale w ten sposob i tak przechodza mi o dowolnej dlugosci...
outsider
sprobuj z tym:

Kod
^\d+((\.|\,)\d{1,2})?$
siurek22
limit {1,5} i dla "1111.11" zwraca 1 :/ nie chce ograniczac liczby po przecinku tylko cale wyrazenie chce zeby liczylo przed przecinkiem przecinek i po...
outsider
Kod
if(strlen(strval($float)) > 10)
smile.gif
siurek22
gdybym chcial w ten sposob zrobic to juz dawno bym zrobil... chce to dac jako limit... nikt na tyle nie ogarnia regexpa zeby powiedziec jak to zrobic?
outsider
Cytat(siurek22 @ 20.07.2010, 14:57:47 ) *
gdybym chcial w ten sposob zrobic to juz dawno bym zrobil... chce to dac jako limit... nikt na tyle nie ogarnia regexpa zeby powiedziec jak to zrobic?


Nie wiem czemu nie pasuje Ci sposob z warukiem, przeciez to jest prawie to samo...
Moze to:
^[0-9\.]{1.5}$
Inaczej sie napewno nie da.
piku235
Ja zrobiłem to tak:
^[\d\.]{1,5}$
To samo co kolega post wyżej tylko zamiast 0-9 to \d i {1.5} na {1,5}
Wyrażenie powinno działać licząc kropkę do wyrażenia np. 100.11 było by {1,6}.
siurek22
tyle ze wasz warunek przepusci ".." ".1" itd co z pewnoscia nie jest liczba, nie pasuje mi dlatego ze musze uzyc 2 funkcji zeby sprawdzic to co moze zrobic jedna funkcja, da sie to napewno zrobic tylko o tym nie wiesz... idac zawsze na latwizne czlowiek nigdy nie nauczy sie pisac optymalnych programow
outsider
Cytat(siurek22 @ 20.07.2010, 17:55:06 ) *
(...) idac zawsze na latwizne czlowiek nigdy nie nauczy sie pisac optymalnych programow

haha, nie bede sie spieral co jest szysbze, 3 prosciutkie funkcje (uzylbym jeszcze is_float()) czy preg_match smile.gif
W dodatku wyrazeniami tego nie zrobisz, bo nie mozesz zliczyc sumy cyfr przed przecinkiem i po. Pozostaje ustalic stala liczbe przed i po przecinku.
OnkelJan
Podpisuje sie do Outsider-a.

Wyrażeniem regularnym nie da sie tego w zaden sposob zrobic tongue.gif

Tyle w tym temacie;p
erix
Czy ja wiem...? Można próbować jakimś obejściem:
  1. function pierdulut($s1, $s2){
  2. return strlen($s1)==2 && strlen($s2)==2;
  3. }
  4.  
  5. preg_match('#([0-9]+)\.([0-9]+)#sie', 'pierdulut("$1", "$2")', $str);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.