ExpressJS route regex

12,241

Solution 1

If you want to avoid a route matching a static file that exists physically, simply put the static middleware before the call to the app.router.

Then the static file (such as robots.txt) will be delivered and these calls will not get through to your routing.

Problem solved ;-).

Solution 2

Put the regex in parentheses like this:

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

Solution 3

Internally, the strings that you give to the Express router are just converted into regexes anyway. If you look at the code, you can see that you can just pass a regex directly.

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

The docs also have examples.

Share:
12,241
Admin
Author by

Admin

Updated on June 21, 2022

Comments

  • Admin
    Admin almost 2 years

    I have route:

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

    It works fine, but I need skip robot.txt and other (humans ....) I create regex (only chars or number):

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

    How I can route only ids, which match this regex?