与快速路由一起使用的正确的正则表达式语法是什么?

时间:2015-06-10 18:30:38

标签: javascript regex node.js express

我正在使用正则表达式进行快速路由,我遇到了障碍。当结果为GET的url时,我有一堆测试可以运行。字符串不以结尾的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
}

但这些都不适用于任何网址。我希望testPath和path req参数位于req.params对象中。

例如,以下三行在字符串时起作用,但在URL传递给表达时不起作用:

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

我见过一些示例,它们都使用和不使用/ ^或$ /来开始或结束快速路由示例中的字符串。我不确定他们是否属于那里。

在快速路线中实施正则表达式的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

显然语法是纯正则表达式。谁会知道的!我目前正在使用:

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

它就像一个魅力。仍然没有想出如何在那里获得变量。但它现在有效。