Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Regex dla przedziału liczba
kropka89
post 31.08.2012, 10:16:07
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.10.2009

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


Witam,
Próbuje napisać regexa dla przedziału liczb, lecz mam problem z literami i spacjami.
Ma przepuszczać następujące wzorce:

123 123 123 - 123 12 123 123
123 - 123123

Czyli
(Liczba z możliwymi spacjami) (rozdzielnik jako myślnik z możliwymi spacjami) (Liczba z możliwymi spacjami)

Ale jeśli pojawią się literki bądź inne znaczki poza liczbami spacjami i myślnikiem to już ma wywalać.
Go to the top of the page
+Quote Post
webdice
post 31.08.2012, 10:31:13
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. preg_match( '#(\d{3}) - (\d{6})#', $s, $r );


EDIT: Przeczytałem Twój temat jeszcze raz i nie wiem czy dobrze rozumiałem. Jeśli chcesz usunąć wszystko co nie jest cyfrą i pauzą to:

  1. preg_replace( '#([^\d-]+)#', '', $s );
Go to the top of the page
+Quote Post
kropka89
post 31.08.2012, 10:36:01
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.10.2009

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


ja to wstawiam pod form zendowy jako validator a tam pewnie dzial to na preg_matchu.

Chce tylko by sprawdzał czy dane zostały wpisane poprawnie. Czyli podał albo czystą liczbę albo przedział liczb.

Oba nie działają. I dlaczego dajesz limit na 3 znaki albo 6? Myślnik może być tylko jeden.
Go to the top of the page
+Quote Post
no_face
post 31.08.2012, 10:38:02
Post #4





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Wg mnie chyba chodzi mu o:

  1. preg_match("#[0-9 ]+[ \-]+[0-9 ]+#", $s, $r );


Ten post edytował no_face 31.08.2012, 10:39:30
Go to the top of the page
+Quote Post
kropka89
post 31.08.2012, 11:22:22
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.10.2009

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


Cytat(no_face @ 31.08.2012, 11:38:02 ) *
Wg mnie chyba chodzi mu o:

  1. preg_match("#[0-9 ]+[ \-]+[0-9 ]+#", $s, $r );

no tak ale pokazuje dopasowania dla stringa z literami. I jak już pisałem myślnik tylko raz a nie przynajmniej raz ale to szczegół. Ma nie znajdować żadnego dopasowania jeśli będą literki.
Go to the top of the page
+Quote Post
nospor
post 31.08.2012, 11:28:40
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie: preg_match("#[0-9 ]+[ \-]+[0-9 ]+#", $s, $r );
a: preg_match("#^[0-9 ]+[ \-]+[0-9 ]+$#", $s, $r );
Powinno załatwić sprawę liter


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
no_face
post 31.08.2012, 11:35:33
Post #7





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Modyfikacja dla max jednego myslnika:

preg_match("#^[0-9 ]+\-[0-9 ]+$#", $s, $r );
Go to the top of the page
+Quote Post
kropka89
post 31.08.2012, 12:58:09
Post #8





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.10.2009

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


no to sprawa załatwiona dla przedziału a dodatkowo potrzebne dla wersji bez przedziału czyli tylko liczba ze spacjami. To wszystko oczywiście w jednym regexie smile.gif

A i jest różnica jak używałem zamiast hashy (#) to slashe (/) na poczatku i koncu?

Ten post edytował kropka89 31.08.2012, 12:58:42
Go to the top of the page
+Quote Post
no_face
post 31.08.2012, 13:08:27
Post #9





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Nie ma rozniicy jezeli chodzi o te "hashy (#) to slashe (/)" to sa delimitery i mozna korzystac z obu wersji.

Prosze:

#^[0-9 ]+\-?[0-9 ]+$#
Go to the top of the page
+Quote Post
kropka89
post 31.08.2012, 13:15:00
Post #10





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.10.2009

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


Cytat(no_face @ 31.08.2012, 14:08:27 ) *
Nie ma rozniicy jezeli chodzi o te "hashy (#) to slashe (/)" to sa delimitery i mozna korzystac z obu wersji.

Prosze:

#^[0-9 ]+\-?[0-9 ]+$#

a no faktycznie można i tak, chociaż ja myślalem żeby zastosować alternatywe:)
miałem prawie tak samo tyle że bez znaków początku i końca.

wielkie dzięki
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: 14.08.2025 - 12:02