Hmmm, primero te recomendaría que usaras: preg_match ( http://uk2.php.net/manual/en/function.preg-match.php ), hay gente que dice que son más rápidas y que consumen menos recursos del sistema.
Lo otro es simplemente añadir un espacio, ¿no?:
Que esto:
Quedaría:
Lo que te pudo haber pasado (y aquí empiezo a especular), es que colocaste el espacio
después del signo de menos (-). Recuerda que el signo de menos también es usado para definir un rango, y la expresión regular se volvía loca cuando trataba de definir un rango desde "_" hasta espacio.
Saludos