grazie della risposta ma purtroppo mettendo il carattere di escape e' come se mi annullasse la reg...

ovvero ho

preg_match('/$[a-z0-9_\[\]-]^/i',$username)

e mi prende qualsiasi carattere presente nella variabile $username

ad esempio accetta { accetta * accetta } tutti i caratteri....

mentre io dovrei fare che possa inserire qualsiasi lettera, qualsiasi numero e oltre a questi i caratteri _-[]