Yo no estoy muy puesto en expresiones regulares .. pero lo poquito que sé es que las expresiones regulares tiene su própio "lenguaje" (por llamarlo de alguna forma) para definir los patrones a seguir ..
En esos "patrones" tienes "cógidos" para identificar a "bloques" .. o que "se repita" .. o "rangos" ..
Algunos de estos son:
[] "rangos"
() "bloque"
{minimo,maximo} "repeticiones"
Y .. otros "códigos" cómo:
^ que indica "principio cadena"
$ final cadena ..
Y bastantes más ..
Haciendo una "aproximación" sería algo tipo.. lo que buscas (es muyy probable que no sea correcto, aviso.):
([a-z0-9]){1,4}
Y ese tipo de expresión regular lo "ejecutas" con la función:
eregi() .. digo "eregi" por qué no distingue entre mayusculas y minusculas .. así me ahora usar: [a-zA-Z0-9] en el "bloque"
Te dejo un manual de expresiones regulares enfocado a PHP bastante bueno ...
http://www.ignside.net/man/php/regex.php
Un saludo,
pd: Las expresiones regulares no son própias de PHP .. Vienen de "Perl" originalmente si no me equivoco (o son más usadas en ese lenguaje) .. tambien puedes usarlas en otros lenguajes ..