表达 Javascript 正则表达式只允许没有句点的字符串
Express Javascript Regex to only allow strings without periods
我有一条处理 localhost:3000/测试的快速路线。我希望在此之后没有句号的所有内容都可以使用相同的 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 时,我希望它使用不同的路线。我以前使用过正则表达式,只是不确定如何将它与快速参数功能结合起来。
编辑:adeneo 的想法行不通,因为我无法使用一段时间的检查正确链接我的函数。这是正则表达式的要点,所以我在执行页面逻辑之前检查 url。
Raul 恐怕您误解了这个问题。让我试着说得更清楚。
我有这样一个文件夹列表:
test
--folder1
----test1.js
----test2.js
----test3.js
--folder2
----folder2-1
----folder2-3
------test4.js
------test5.js
----test6.js
--folder3
以下 urls 应该有一个捕获它们的正则表达式:
test/folder1
test/folder2
test/folder2/folder2-3
还有一个只捕获以下内容:
test/folder1/test1.js
test/folder2/folder2-3/test4.js
test/folder2/test6.js
就像我说的,我已经完成了正则表达式,我只是不知道如何使用 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/maths/dificults”,你最终会看到 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');
});
并且您可以使用括号 () 来捕获参数
req.params 喜欢 //test/([^.]*)$/
我有一条处理 localhost:3000/测试的快速路线。我希望在此之后没有句号的所有内容都可以使用相同的 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 时,我希望它使用不同的路线。我以前使用过正则表达式,只是不确定如何将它与快速参数功能结合起来。
编辑:adeneo 的想法行不通,因为我无法使用一段时间的检查正确链接我的函数。这是正则表达式的要点,所以我在执行页面逻辑之前检查 url。
Raul 恐怕您误解了这个问题。让我试着说得更清楚。
我有这样一个文件夹列表:
test
--folder1
----test1.js
----test2.js
----test3.js
--folder2
----folder2-1
----folder2-3
------test4.js
------test5.js
----test6.js
--folder3
以下 urls 应该有一个捕获它们的正则表达式:
test/folder1
test/folder2
test/folder2/folder2-3
还有一个只捕获以下内容:
test/folder1/test1.js
test/folder2/folder2-3/test4.js
test/folder2/test6.js
就像我说的,我已经完成了正则表达式,我只是不知道如何使用 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/maths/dificults”,你最终会看到 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');
});
并且您可以使用括号 () 来捕获参数 req.params 喜欢 //test/([^.]*)$/