2015-08-18 2 views
1

Привет Я пытаюсь получить свое регулярное выражение, работающее в expressJS. Если я войду в/se/home/helloworld, он всегда будет запускать первый «Дом», а не «Тест». Как это решить?Expressjs regExp с параметрами

Мелко это должно передать этот путь дерева.

/se/home/:user 
/se/home/:user/:notes 
/se/home/:user/:notes/:someting 

Это то, что мне удалось до сих пор ...

app.get(new RegExp("^(\/(se|en))?\/home\/"), function(req, res, next) { 
    console.log("Home"); 
    res.render('index', { title: 'Express' }); 
}); 

app.get(new RegExp("^(\/(se|en))?\/home\/([^/]+)"), function(req, res, next) { 
    console.log("Test"); 
    console.log(req.params); 

    res.render('index', { title: 'Express test' }); 
}); 

ответ

1

Вы должны использовать якорь с первым регулярным выражением, чтобы убедиться, что нет ничего другого после home/:

RegExp("^(/(se|en))?/home/$") 

Или, используйте строковый литерал:

/^(\/(se|en))?\/home\/$/ 

В противном случае вы получите матч.

См demo

+0

Пожалуйста, не стесняйтесь, напишите комментарий на случай, если что-нибудь о моем подходе неясен к вам. –

+1

Прекрасно работает: D –

Смежные вопросы