Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: numer lokalu - wyrażenia regularne
Forum PHP.pl > Forum > PHP
emil_seba
Witam, chce sprawdzić wyrażeniem regularnym poprawność numeru lokalu. Napisałem takie coś:
ale nie działa sad.gif

  1. if(!preg_match( '/^[0-9]{1,3}/ [0-9]{1,3}$/' , $NumerLokalu ))
  2. {
  3. $blad_tzt .= 'Popraw numer lokalu';
  4. $blad = true;
  5. }
  6.  
  7.  


Nie wiem czy w Polsce są aż takie kosmiczne numery domów(lokali) np 121/57 ale kto wie znając urzędników.
Moje pytanie brzmi jak napisać wyrażenie by sprawdzało numery domów z slashami lub bez nich w zależności czy go wpisano?
Próbowałem już tak:
  1. f(!preg_match( '/^[0-9]{1,3}\\? [0-9]{,3}$/' , $NumerLokalu )) // tu jezt z backslashem
  2.  
  3. f(!preg_match( '/^[0-9]{1,3} \/?[0-9]{,3}$/' , $NumerLokalu ))
  4.  
  5. f(!preg_match( '/^[0-9]{1,3} [\/?][0-9]{,3}$/' , $NumerLokalu ))
  6.  
  7. f(!preg_match( '/^[0-9]{1,3} [\\?][0-9]{,3}$/' , $NumerLokalu ))
  8.  
  9.  
  10. f(!preg_match( '/^[0-9]{1,3} [\\]?[0-9]{,3}$/' , $NumerLokalu ))
  11.  
  12.  
  13. f(!preg_match( '/^[0-9]{1,3} [\/]?[0-9]{,3}$/' , $NumerLokalu ))
  14.  
  15.  
  16.  


Ma ktoś jakiś pomysł? Dziękuje z góry.
flashdev
  1. preg_match( '/^[0-9]{1-3}\/[0-9]{1-3}$/' , $NumerLokalu )


Niektóre znaki wypada escape`ować. Skąd PHP ma znać Twoje intencje winksmiley.jpg

Edit:

Cytat(emil_seba @ 25.08.2010, 11:27:47 ) *
[...]
Moje pytanie brzmi jak napisać wyrażenie by sprawdzało numery domów z slashami lub bez nich w zależności czy go wpisano?
[...]


  1. preg_match( '/^[0-9]{1-3}(\/[0-9]{1-3})?$/' , $NumerLokalu )
wookieb
Nie ma 100% metody wykrywającej numer lokalu
Dlaczego? Ponieważ ludzie zapisują go w przeróżnych formach
1) Ulica numer_bloku/numer_mieszkania
2) Ulica numer_domu
3) Ulica numer_bloku przez numer_mieszkania
4) Ulica numer_bloku m. numer_mieszkania

Oczywiście można by zadbać tylko o pierwszą wersję ale czy jest sens?
Jeżeli projektujesz formularz to dodaj oddzielne pole na numer bloku i mieszkania.
Jeżeli nie jest to formularz zaimplementuj 1 i 4 metodę ale to nie zwalnia Cię z obowiązku sprawdzenia wyciągniętych danych

  1. if(!preg_match( '/^[0-9]{1-3}\/ [0-9]{1-3}$/' , $NumerLokalu ))
emil_seba
działa dzięki smile.gif sorry, że z początku napisałem źle ilość powtórzeń elementów zamiast {1,3} napisałem {1-3}. Jeszcze raz dzięki smile.gif
sunpietro
nie zapominaj że czasem bloki mają jeszcze literki obok cyfry winksmiley.jpg
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.