Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [regexp] limitowany float
siurek22
post 19.07.2010, 18:22:28
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 2
Dołączył: 24.02.2008

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
outsider
post 20.07.2010, 13:11:26
Post #2





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

Ostrzeżenie: (0%)
-----


sprobuj z tym:

Kod
^\d+((\.|\,)\d{1,2})?$


Ten post edytował *OuTSideR* 20.07.2010, 13:12:02
Go to the top of the page
+Quote Post
siurek22
post 20.07.2010, 13:27:16
Post #3





Grupa: Zarejestrowani
Postów: 62
Pomógł: 2
Dołączył: 24.02.2008

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
outsider
post 20.07.2010, 13:54:05
Post #4





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

Ostrzeżenie: (0%)
-----


Kod
if(strlen(strval($float)) > 10)
smile.gif
Go to the top of the page
+Quote Post
siurek22
post 20.07.2010, 13:57:47
Post #5





Grupa: Zarejestrowani
Postów: 62
Pomógł: 2
Dołączył: 24.02.2008

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
outsider
post 20.07.2010, 14:11:05
Post #6





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

Ostrzeżenie: (0%)
-----


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.

Ten post edytował *OuTSideR* 20.07.2010, 14:11:33
Go to the top of the page
+Quote Post
piku235
post 20.07.2010, 14:28:25
Post #7





Grupa: Zarejestrowani
Postów: 26
Pomógł: 4
Dołączył: 3.11.2008
Skąd: Rzeszów

Ostrzeżenie: (10%)
X----


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}.
Go to the top of the page
+Quote Post
siurek22
post 20.07.2010, 16:55:06
Post #8





Grupa: Zarejestrowani
Postów: 62
Pomógł: 2
Dołączył: 24.02.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
outsider
post 20.07.2010, 19:59:17
Post #9





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

Ostrzeżenie: (0%)
-----


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.

Ten post edytował *OuTSideR* 20.07.2010, 20:01:15
Go to the top of the page
+Quote Post
OnkelJan
post 20.07.2010, 21:45:22
Post #10





Grupa: Zarejestrowani
Postów: 4
Pomógł: 1
Dołączył: 14.07.2010

Ostrzeżenie: (0%)
-----


Podpisuje sie do Outsider-a.

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

Tyle w tym temacie;p
Go to the top of the page
+Quote Post
erix
post 20.07.2010, 22:17:08
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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);


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 18:58