![Pensando](http://static.forosdelweb.com/fdwtheme/images/smilies/scratchchin.gif)
pues de hecho, lo estas haciendo muy mal...
las expresiones son cadenas, osea.. strings, por lo tanto debes ponerlas entre comillas...
Código PHP:
echo preg_match('/^[a-zA-Z0-9\-_]{3,20}$/', 'luis-lalo')? 'si': 'no';
además, la extensión EREG es obsoleta y se recomienda usar PCRE
te sugiero leer el siguiente enlace...
http://www.forosdelweb.com/f18/aport...s-pcre-646110/