Express Javascript Regex只允许不带句点的字符串

Express Javascript Regex只允许不带句点的字符串,javascript,regex,node.js,express,routes,Javascript,Regex,Node.js,Express,Routes,我有一个处理localhost:3000/test的快速路由。我希望在此之后的所有内容都不需要使用相同的router.get命令来渲染。我正在努力找出正确的Javascript正则表达式字符串 router.get('/test/:path[\s^.]*$', function () { //res.render etc } 因此,当我访问localhost:3000/test/math或localhost:3000/test/math/geometry时,我希望它使用相同的路径。但当

我有一个处理localhost:3000/test的快速路由。我希望在此之后的所有内容都不需要使用相同的router.get命令来渲染。我正在努力找出正确的Javascript正则表达式字符串

router.get('/test/:path[\s^.]*$', function () {
    //res.render etc
}
因此,当我访问localhost:3000/test/math或localhost:3000/test/math/geometry时,我希望它使用相同的路径。但当我导航到localhost:3000/test/math/geometry.test时,我希望它使用不同的路径。我以前使用过regex,只是不知道如何将它与expressparams功能结合起来

编辑:adeneo的想法行不通,因为我无法在一段时间内使用检查来正确链接我的函数。这就是正则表达式的要点,因此我在执行页面逻辑之前检查url

劳尔,恐怕你误解了这个问题。让我试着说得更清楚些

我有如下文件夹列表:

test
--folder1
----test1.js
----test2.js
----test3.js
--folder2
----folder2-1
----folder2-3
------test4.js
------test5.js
----test6.js
--folder3
以下URL应具有一个用于捕获它们的正则表达式:

test/folder1
test/folder2
test/folder2/folder2-3
另一个只包含以下内容:

test/folder1/test1.js
test/folder2/folder2-3/test4.js
test/folder2/test6.js

正如我所说,我已经完成了regex,我只是不知道如何使用Express的:paramName功能。

在这种情况下,顺序确实很重要。 如果将异常放在第一位,您将处理路径

app.get('/test/math/geometry.test', function (req, res) {
  res.send('catch it');
});

app.get('/test/:path*', function (req, res) {
  res.send('the params are    ' +  JSON.stringify(req.params));
});
如果您尝试使用例如´/test/math/deficults´这样的路由,您最终会看到req.params有如下内容:

 {"0":"/maths/dificults","path":"maths"}
您可以按位置访问原始参数,在本例中为“0”,因为按名称可以在第一个“/”中剪切参数

编辑

您可以应用相同的概念并在内部使用真正的正则表达式:

app.get(/\/test\/[^\.]*$/, function (req, res) {
  res.send('catch it without dot');
});

app.get('/test/*', function (req, res) {
  res.send('catch it with dot');
});
您可以使用parentesis()在中捕获参数
req.params,比如//test/([^.]*)$/

在正则表达式中不需要转义句点吗?克拉可能需要在字符类中,但不确定;这是一个特殊字符,表示行的开头。您不能在字符串中添加正则表达式,或者使用正则表达式作为路由,或者使用字符串。最简单的方法可能是在路由中检查url一段时间,然后调用
next()
adeneo,这是一个很好的观点。我会试试的。你有最新消息。我希望我理解你的问题,基本上你可以使用一个完整的正则表达式,如果你使用正常的语法,你可以访问非常小的选项。例如,^解析后的url在req.originalurl中没有访问权限是的,我有。在这种情况下,您可以将答案标记为正确,编写答案并将其标记为正确,或将问题或标志关闭为重复。这里的主要问题是,我试图在字符串中使用正则表达式语法,而不是使用普通正则表达式。除此之外,问题是关于将参数名与express routes一起使用,这个答案虽然没有解决我的问题,但充分回答了这个问题。