ďťż
 
 
   [+] [PHP] wyrażenia regularne
 
 

Tematy

 
    
 

 

 

 

[+] [PHP] wyrażenia regularne





ruun - 20-10-2008 08:54
Jak sprawdzić czy ciąg znaków jesst w postaci: 123-abcdefghijk ?

Ciąg musi zaczynać sie od trzycyfrowego numeru, kolejnym znakiem musi być myślnik, reszta to dowolnej długości ciąg składający się z małych liter a-z (bez polskich znaków).

Próbowałem tak:

$wzorzec = '[0-9]{3}-[a-z]*';
if(ereg($wzorzec, $nazwa)) $wynik = 'Pasuje'; ale nie działa.



gĂśnx - 20-10-2008 09:48
$wzorzec = "^[0-9]{3}-[a-z]{1,}$"; {1,} ma za zadanie powtórzyć jakąś literkę przynajmniej raz, gdyby była tam gwiazka (*), to skrypt nie działałby perfekcyjnie, ponieważ można byłoby wpisać "997-" i skrypt zaakceptowałby to. Jeśli natomiast damy {1,}, to użytkownik musi wpisać przynajmniej jedną literkę, dzięki temu fraza "997-" nie będzie pasowała już do wzorca.

gĂśnx



genobis - 20-10-2008 10:27
A co Ci nie działa? Jest OK, z dokładnością do tego, na co zwrócił uwagę gĂśnx. Jednak wyrażenie jako takie powinno być w porządku.

Chociaż oczywiście użycie {1,} jest poprawne, to prościej (a co prostsze, to lepsze ;-)) jest użyć po prostu symbolu +, który - w przeciwieństwie do * oznaczającej dowolną ilość powtórzeń - oznacza jedno lub więcej powtórzeń.

Czyli:
$wzorzec = "^[0-9]{3}-[a-z]+$";



ruun - 20-10-2008 10:46
Miałem błąd w innym miejscu skryptu. Teraz wszystko działa, dzięki.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis