[ 3way @ 06.12.2010. 22:25 ] @
Nije mi jasno sta radim pogresno...
Recimo da se radi o proveri telefonskog broja...
Linija u kojoj proveravam broj u formatu 06x-xxx-xxx(x) izgleda ovako:
Code:
if [[ $l =~ 06[0-9]-[0-9]{3}-[0-9]{3,4} ]]

Provera na svim poljima radi kako treba, osim na poslednjem. If izbacuje false ako je na poslednjem mestu manje od 3 cifre, ali izbacuje true ako je sve vece od 3. Isto vazi i za [0-9]{3}.
Dakle, problem je u tome da provera na poslednjem bloku uvek radi delimicno.
[ 3way @ 06.12.2010. 22:33 ] @
Evo, resio sam tako sto sam na kraj uslova dodao jedan $
Znaci ovo:
if [[ $l =~ 06[0-9]-[0-9]{3}-[0-9]{3,4}$ ]]

medjutim, i dalje mi nije jasno zasto prva varijanta ne radi...
[ daigu @ 11.12.2010. 11:35 ] @
Citat:
medjutim, i dalje mi nije jasno zasto prva varijanta ne radi...

Ona radi, ali ne onako kako si ti zamislio. Ona traži uzorak u tekstu bilo koje dužine, znači tvoj regular expression bi pokazao true i kada bi imao telefonski broj kao npr:

5555555506x-xxx-xxx

Pravilni regularni izraz za ovaj tvoj slučaj bi uključivao i jedan '^' na početku izraza. E sad ovisi gdje se nalazi takav telefonski broj (u tekstu, html-u), pa prema tome se može i izmijeniti način parsiranja.