2012-09-08 19 views
10

tengo ruta:ExpressJS ruta de expresiones regulares

app.get('/:id', routes.action); 

Funciona bien, pero necesito saltar robot.txt y otros seres humanos (....) que crear expresiones regulares (sólo caracteres o número):

/^[a-z]{0,10}$/ 

¿Cómo puedo enrutar solo identificadores, que coincidan con esta expresión regular?

Respuesta

4

Si desea evitar una ruta que coincida con un archivo estático que existe físicamente, simplemente ponga el middleware static antes de la llamada al app.router.

A continuación, se entregará el archivo estático (como robots.txt) y estas llamadas no llegarán a su enrutamiento.

Problema resuelto ;-).

18

Ponga la expresión regular entre paréntesis así:

app.get('/:id(^[a-z]{0,10}$)', routes.action); 
2

Internamente, las cuerdas que le dan al router Express son simplemente convierten en expresiones regulares de todos modos. Si mira the code, puede ver que puede pasar una expresión regular directamente.

app.get(/^\/[a-z]{0,10}$/, routes.action); 

The docs también tienen ejemplos.

0

Si lo necesita para múltiples rutas:

app.routes.get 

es una matriz que tenga todas las rutas conseguir. Puede cambiar el objeto de expresión regular para las rutas que necesita cambiar.