2015-06-10 2 views
1

Я использую регулярное выражение для экспресс-маршрутизации, и я попал в блокпост. У меня есть куча тестов, которые запускаются, когда URL-адрес заканчивается результатом GET. a GET на строке , не заканчивающейся в, возвращает список папок и ссылок на тесты.Каков правильный синтаксис регулярных выражений для использования с экспресс-маршрутами?

У меня есть регулярное выражение, которое работает на обычных строках

var noresult = new RegExp(/^(?![\w\/:].*result$)/); 
var result = new RegExp(/^[\w\/:].*result$/); 

Но я не могу за жизнь мне понять, как реализовать их в экспресс. Я в настоящее время:

router.get('/:testPath(^[\w\/:].*result$)', [function (req, res, next) { 
    // run mocha test 
    // render page 
} 

для моих тестов и

router.get('/:path(?![\w\/:].*result$)', function (req, res) { 
    // build folder/file structure 
    // render page 
} 

, но ни одна из этих работ для любого URL. Я хочу, чтобы параметры testPath и req возвращались в объект req.params.

Например, следующие три линии работают, когда строки, но не тогда, когда прошло URLs выразить:

/test/path/to/test 
/test/path/to/test/ 
/test/path/to/testfile/result 

Я видел примеры, как использование и не использовать/^ или $/начать или конец строки в примерах экспресс-маршрутизации. Я не уверен, что они там или нет.

Каков правильный способ реализации регулярного выражения в экспресс-маршрутах?

ответ

0

Очевидно, синтаксис - это чисто регулярное выражение. Кто бы знал! В настоящее время я использую:

router.get(/[\w\/:]*result$/, [function (req, res, next) { 
router.get(/^(?![\w\/\:].*result$)/, function (req, res, next) { 

и он работает как очарование. Все еще не выяснили, как получить переменные там. Но сейчас это работает.

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