[ lenny @ 13.11.2002. 15:39 ] @
Treba proveriti ispravnost korisnickog imena u PHP-u. Za ovo koristim sledeci regular expression:

^[A-z0-9_]*$

Znaci dopustam alfanumericke znake i underscore. Pitanje je sledece: kako dopustiti i tacku u imenu?
Negde sam procitao da specijalne karaktere ne treba escape-ovati, ako su prvi u nizu. Ali ako ubacim tacku kao prvi element niza (ispred A):

^[.A-z0-9_]*$

on ce propustiti sve. A ako ubacim jos jedan backslash, onda ce raditi, propustace tacke, ali i backslash-eve:

^[\.A-z0-9_]*$

Kako da se resi ovaj problemcic?
[ Gojko Vujovic @ 14.11.2002. 03:22 ] @
Eregi ili pcre?
[ lenny @ 14.11.2002. 14:34 ] @
Obicna ereg() funkcija u PHP-u.
[ Jbyn4e @ 14.11.2002. 15:51 ] @
Hm...
http://docs.kde.org/3.0/kdeutils/KRegExpEditor/whatIsARegExp.html kaze:
Citat:

Example 2.1. Searching for normal text.

If you just want to search for a given text, then regular expression is definitely not a good choice. The reason for this is that regular expressions assign special meaning to some characters. This includes the following characters: .*|$. Thus if you want to search for the text kde. (i.e. the characters kde followed by a period), then you would need to specify this as kde\.[1] Writing \. rather than just . is called escaping.

Dakle, trebalo bi da ti to radi, ne znam zasto ti propusta i backslash...?
Opet, mogao bi da probas i
^[\.\w]*$
(\w any "word" character, equivalent to [A-Za-z0-9_] )

Probaj pa javi, ja sad nemam vremena...
[ lenny @ 14.11.2002. 20:20 ] @
[\.\w] mi nije pomoglo. Problem ostaje isti: radi (i) to sto treba, ali propusta i slash.
[ -zombie- @ 15.11.2002. 00:51 ] @
batali posix regex...

evo ti sa pcre:
Code:

echo preg_match("!^[\.\w]+$!", $username)


btw, primeti da sam stavio + umesto *, da bi morao da unese bar jedan karakter. ako oces da imash recimo 5-20 karaktera, stavi {5,20} umesto +
[ tOwk @ 19.11.2002. 19:27 ] @
Ne možeš koristiti ,,A-z'', već probaj sa "^[.A-Za-z0-9_]+$". Ako ovo ne radi (a tačka ne mora biti na prvom mestu, crtica bi npr. morala zbog nizova 0-9, a-d i slično), onda ti ne valja regex biblioteka!!!

S obzirom na to da je ovo vrlo malo verovatno, dodaću još samo da niz u skupu znakova označava niz vrednosti -- regex biblioteka nema nikakvo saznanje o tome jesu li to slova ili ne. Prema tome "A-z" će uključiti i mnoge simbole koje najverovatnije nisi hteo, a možda je među njima i kosa crta. Tu si na samom početku i grešio.

U svetlu prethodnih napomena, dodaću i da možeš koristiti "^[.\w]+$" za isti rezultat.

Toliko
[ Jbyn4e @ 20.11.2002. 15:58 ] @
^[.\w]+$ - koliko je meni poznato:
. zamenjuje "any single character except a newline character", dakle, ovde ce mu proci i |, i \ i [ i ] i ...
\.\w znaci - . i niz karaktera koji moze da se sastoji od A-Za-z0-9_

a posto mu ni to ne radi - moguce da ima losu bibl. regexpa ili je nesto drugo u pitanju sto sad ne mozemo da pronadjemo sta.
[ tOwk @ 20.11.2002. 22:55 ] @
To nije slučaj za POSIX regex; pogledaj, na primer (ovo će biti zvanično POSIX 2002 najverovatnije početkom decembra -- ali ovo je sve prebačeno gotovo istovetno iz starog POSIX-a; besplatna registracija može biti neophodna za čitanje), http://www.opengroup.org/onlin...s/xbd_chap09.html#tag_09_03_05 :
Citat:

The special characters '.' , '*' , '[' , and '\' (period, asterisk, left-bracket, and backslash, respectively) shall lose their special meaning within a bracket expression.


Izričito se navodi da nije potreban naročiti tretman za ,,.'', ,,\'' i druge simbole koji se ne koriste pri navođenju samog ,,bracket expression'' (uglaste zagrade, crtica itd.)

Prema tome, POSIX regex će time uključiti i (obrnutu) kosu crtu. Međutim, moguće je da ovo radi u Perl regex-u zato što se ,,backslash-nešto'' interpretira kao ,,nešto'' ukoliko mu nije unapred dodeljeno značenje.

Toliko

PS. Ja sam zaista isprobao dati primer na ispravnoj POSIX regex biblioteci, i on radi kako se očekuje (tj. kako *ja* očekujem, čitajući POSIX definiciju
[ -zombie- @ 22.11.2002. 00:48 ] @
zato mirzim posix! (radi kao sto pise u dokumentaciji, a ne onako kako ocekujem )
[ McKracken @ 22.11.2002. 12:08 ] @

Pogledajt regex2txt na soureforgetu.

Jako fina skripta koja olaksava rad sa regexima i umanjuje glavobolje bolje od kafetina ...
[ -zombie- @ 22.11.2002. 23:53 ] @
nikada se necu odreci moje kafe!!! ;)

btw, nisam rekao da imam problema sa regex-ima. samo sa posix. u stvari, nemam ni sa posix, jer ih uopste ne koristim.. ;)