Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Regex dla przedziału liczba
Forum PHP.pl > Forum > PHP
kropka89
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ć.
webdice
  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 );
kropka89
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.
no_face
Wg mnie chyba chodzi mu o:

  1. preg_match("#[0-9 ]+[ \-]+[0-9 ]+#", $s, $r );
kropka89
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.
nospor
nie: preg_match("#[0-9 ]+[ \-]+[0-9 ]+#", $s, $r );
a: preg_match("#^[0-9 ]+[ \-]+[0-9 ]+$#", $s, $r );
Powinno załatwić sprawę liter
no_face
Modyfikacja dla max jednego myslnika:

preg_match("#^[0-9 ]+\-[0-9 ]+$#", $s, $r );
kropka89
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?
no_face
Nie ma rozniicy jezeli chodzi o te "hashy (#) to slashe (/)" to sa delimitery i mozna korzystac z obu wersji.

Prosze:

#^[0-9 ]+\-?[0-9 ]+$#
kropka89
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
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.