¿Qué caracteres literales se deben escapar en una expresión regular?

Acabo de escribir una expresión regular para usar con la función phppreg_match que contiene la siguiente parte:

[\w-.]

Para que coincida con cualquier carácter de palabra, así como un signo menos y el punto. Si bien parece funcionar en preg_match, intenté ponerlo en una utilidad llamada Reggy y se queja de "Rango vacío en la clase char". La prueba y el error me enseñaron que este problema se resolvió escapando del signo menos, convirtiendo la expresión regular en

[\w\-.]

Dado que el original parece funcionar en PHP, me pregunto por qué debería o no escapar del signo menos y, dado que el punto también es un carácter con un significado en PHP, por qué no necesitaría escapar del punto. ¿La utilidad que estoy usando es simplemente una tontería, está funcionando con otro dialecto de expresiones regulares o mi expresión regular es realmente incorrecta y tengo suerte de que preg_match me permita salir con la suya?

Respuestas a la pregunta(5)

Su respuesta a la pregunta