Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenia regularne (łatwe)
Forum PHP.pl > Forum > PHP
Kmils21
Witam, mam tak:
([0-9])
i to jest dowolna liczba od 0 do 9, a jak dać, dowolną liczbę z dowolnego zakresu?
Sephirus
Cytat
(...) i to jest dowolna liczba od 0 do 10 (...)


Oj nie... To jest dowolna liczba z zakresu 0 - 9 smile.gif innymi słowy jedna dowolna cyfra. Nie możesz określić konkretnego zakresu jak na przykład 0-1500 smile.gif Ale możesz określić ile minimalnie i maksymalnie może znaleźć się cyfr. Na przykład:

[0-9]+ oznacza minimum jedną cyfrę, maksimum nieokreślone czyli np.: 1, 22, 333, 4444 itd

[0-9]{3,5} oznacza minimum 3 cyfry maksimum 5 czyli np.: 345, 5678, 67890 itp ale już 1 czy 22 nie przejdzie

Ogólny zapis to [znaki]{minimum,maksimum}

Poczytaj o wyrażeniach trochę - źle je chyba rozumiesz smile.gif
Damonsson
Teoretycznie w sumie może, tylko przepuści też "0400"

\b[0-1][0-5][0-9]{1,2}\b

Nie znam się dobrze na wyrażeniach regularnych, więc nie wiem czy można jakoś to jeszcze obejść, żeby nie przepuszczało "0400" itp.
Sephirus
W jakimś "przybliżeniu" może i by się dało - ale to już łamanie głowy smile.gif

Taki zakres 0-1500 nie jest łatwo zobrazować bo wchodzą w grę liczby 1 cyfrowe, 2 cyfrowe, 3 cyfrowe i 4 cyfrowe mniejsze od 1501 - to naprawdę mega zadanie napisać to na regexach smile.gif jedyne co mi przychodzi na myśl to OR'owanie:

Kod
#([0-9])|([123456789][0-9])|([123456789][0-9]{2})|(1[0-4][0-9]{2})|(1500)#


Niby się da...
Kmils21
Wiem że 0-9, musiałem zrobić literówkę, a raczej liczbówkę haha.gif

Musiałem mieć w innym miejscu błąd i nie działało mi ([0-100]), a taki zakres chciałem. Teraz już działa, niestety nie umiem zlokalizować co zmieniłem.

Dzięki
b4rt3kk
Cytat(Kmils21 @ 18.06.2013, 09:38:01 ) *
Wiem że 0-9, musiałem zrobić literówkę, a raczej liczbówkę haha.gif

Musiałem mieć w innym miejscu błąd i nie działało mi ([0-100]), a taki zakres chciałem. Teraz już działa, niestety nie umiem zlokalizować co zmieniłem.

Dzięki


A co to jest? [0-100]. Owy "zakres" nie polega na stricte zakresie liczbowym, tylko definiuje zakres znaków, które mogą się znaleźć na określonej pozycji ciągu. Tak więc 0-9 jest OK, ale już 0-100 nie ma prawa bytu. Bo oznacza tyle, że możesz wprowadzić liczbę 100 lub 000. 0-1 dopuszcza tylko 0 i 1, natomiast pozostałe dwa znaki muszą być zerami jeśli wprowadzony ciąg ma pasować do wyrażenia.
markonix
A może po prostu:

  1. if ($zmienna > 0 && $zmienna < 10)


sleep.gif
pyro
@markonix, doskonały pomysł!

...żeby sprawić, aby coś nie działało.

  1. $zmienna = 'Chcę sprawdzić, czy w stringu poza taką dużą liczbą 3285257878 występuje też mniejsza od 1500, czyli 1450 <----';
  2. if ($zmienna > 0 && $zmienna < 1450)
  3. echo 'jest';
  4. else
  5. echo 'nie ma';
Sephirus
hehe to ja dorzucę że jeśli to by było tak:

  1. $zmienna = "1450 owiec chodziło po pastwisku";
  2.  
  3. if((int) $zmienna >= 0 && (int) $zmienna <= 1450) echo 'ZGADZA SIĘ!';


to by zadziałało nawet chyba oneeyedsmiley02.png
Kmils21
Cytat
A co to jest? [0-100]. Owy "zakres" nie polega na stricte zakresie liczbowym, tylko definiuje zakres znaków, które mogą się znaleźć na określonej pozycji ciągu. Tak więc 0-9 jest OK, ale już 0-100 nie ma prawa bytu. Bo oznacza tyle, że możesz wprowadzić liczbę 100 lub 000. 0-1 dopuszcza tylko 0 i 1, natomiast pozostałe dwa znaki muszą być zerami jeśli wprowadzony ciąg ma pasować do wyrażenia.


Zatem zlamiłem. Jak mam to zrobić?


Internety mówią, że może być tak:
Kod
([\d])
b4rt3kk
Cytat(Kmils21 @ 18.06.2013, 15:57:27 ) *
Zatem zlamiłem. Jak mam to zrobić?


Internety mówią, że może być tak:
Kod
([\d])


Nie wiem co chcesz osiągnąć, ale jeśli chcesz za pomocą wyrażenia regularnego znaleźć liczby z zakresu od 0 do 100 to troszkę się z tym pobawisz. Jeśli natomiast służy Ci to wyłącznie do walidacji jakichś pól (np. danych od użytkownika) to PHP i jeden if załatwi sprawę. W jakim celu chcesz znaleźć wyrażeniem regularnym liczbę od 0 do 100?
markonix
Cytat(pyro @ 18.06.2013, 12:32:02 ) *
@markonix, doskonały pomysł!

...żeby sprawić, aby coś nie działało.

  1. $zmienna = 'Chcę sprawdzić, czy w stringu poza taką dużą liczbą 3285257878 występuje też mniejsza od 1500, czyli 1450 <----';
  2. if ($zmienna > 0 && $zmienna < 1450)
  3. echo 'jest';
  4. else
  5. echo 'nie ma';

Czytałem kilka razy - nigdzie nie jest mowa o jakimś stringu zawierającym liczby.
Niech po prostu autor się bardziej określi.
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.