|
[+] [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.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|