Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [regex]Wyrażenie regularne dla 1,2,5,6 itp, Pomoc w napisaniu.
arzach
post 31.10.2010, 18:56:00
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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



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]$
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Wicepsik
post 31.10.2010, 19:00:14
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


  1. preg_match('#^[0-9][0-9,]+[0-9]$#', $txt, $m);


--------------------
Go to the top of the page
+Quote Post
arzach
post 31.10.2010, 19:05:57
Post #3





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Dziękuje bardzo działa.
Go to the top of the page
+Quote Post
Crozin
post 31.10.2010, 19:26:42
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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.
Go to the top of the page
+Quote Post
arzach
post 31.10.2010, 19:49:40
Post #5





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


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
Go to the top of the page
+Quote Post
potreb
post 31.10.2010, 19:55:34
Post #6





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Również można zastosować: preg_match('#^[0-9,]*$#', $a, $m); chyba krócej? Różnie można napisać.

Ten post edytował potreb 31.10.2010, 19:57:13


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

Go to the top of the page
+Quote Post
Crozin
post 31.10.2010, 19:58:13
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


W takim razie poprawnym wyrażeniem będzie: #^\d+(?:,\d+)*$#

@potreb: ciągi spełniające Twoje wyrażenie: "" (pusty ciąg), "321312,,,,,3213213", ",,,"

Ten post edytował Crozin 31.10.2010, 19:59:14
Go to the top of the page
+Quote Post
arzach
post 31.10.2010, 20:00:48
Post #8





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


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,

Ten post edytował arzach 31.10.2010, 20:01:40
Go to the top of the page
+Quote Post
Crozin
post 31.10.2010, 20:05:12
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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.
Go to the top of the page
+Quote Post
arzach
post 31.10.2010, 20:06:54
Post #10





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Dziękuje bardzo.
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: 19.07.2025 - 06:22