Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [regex]Wyrażenie regularne dla 1,2,5,6 itp
Forum PHP.pl > Forum > Przedszkole
arzach

Jak w temacie proszę o pomoc w napisaniu wyrażenie regularnego by pasowało do takich ciągów jak

2,35,6

5,7,8,9,10

5,7,12,4,8,1,6

itp

Próbowałem tak ale nie działa

Kod
^[0-9]{1}(,)[0-9]$
Wicepsik
  1. preg_match('#^[0-9][0-9,]+[0-9]$#', $txt, $m);
arzach
Dziękuje bardzo działa.
Crozin
A czy: 0,,,,,,,,0 jest poprawnym ciągiem? Bo pasuje to do tego wyrażenia.

Na podstawie tych przykładów ciężko jest określić jaki ma być wzorzec. Określ dokładnie format danych. Czy pierwsza liczba musi być jednocyfrowa, czy w ogóle musi pojawić się przecinek itp.
arzach
Chodzi mi o to że chce to wykorzystać w zapytaniu w postaci

WHERE user_id IN (12,54) itp

Ciąg musi się składać z dowalonych cyfr oddzielonych przecinkiem

Np.

345,5665

Może się też zdarzyć że może być tylko jedna liczba

Np. 445
potreb
Również można zastosować: preg_match('#^[0-9,]*$#', $a, $m); chyba krócej? Różnie można napisać.
Crozin
W takim razie poprawnym wyrażeniem będzie: #^\d+(?:,\d+)*$#

@potreb: ciągi spełniające Twoje wyrażenie: "" (pusty ciąg), "321312,,,,,3213213", ",,,"
arzach
Cytat(potreb @ 31.10.2010, 19:55:34 ) *
Również można zastosować: preg_match('#^[0-9,]*$#', $a, $m); chyba krócej? Różnie można napisać.



No to tez nie do końca działa bo przepuszcza 0 i także np.
,,,0,,32,21,312,,,321,312,
Crozin
Akurat zero, wartości ujemne (nawet w przypadku, gdy kolumna jest typu UNSIGNED) czy liczby wykraczające poza zakres typu LONG (np. 50 dziewiątek) nie powodują błędu - po prostu rekord o danym ID nie zostanie odnaleziony.

Testowałem to tylko pod MySQL ale obstawiam, że w przypadku innych baz danych jest tak samo.
arzach
Dziękuje bardzo.
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.