我正在与vue.js的官方vue-router合作。
我目前正在尝试使用dynamic route matching获取匹配的路线。由于vue-router在引擎盖下使用path-to-regexp,因此可以在路由路径中使用正则表达式,如here所述。您可以使用此功能here找到vue-router的示例。
这是我的路线:
{
path: '/a/:id/(r/:generic1/)?s/:name/a'
}
这里有一些可行的例子:
'/a/1234/s/Foo/a' // => {0: undefined, id: "1234", name: "Foo"}
'/a/23456/s/Bar/a' // => {0: undefined, id: "23456", name: "Bar"}
这里有一些不起作用的例子,但应该:
'/a/1234/r/Bar/s/Foo/a' // => {id: "1234", generic1: "Bar", name: "Foo"}
'/a/23456/r/Baz/s/Goo/a' // => {id: "1234", generic1: "Baz", name: "Goo"}
..我在这里做错了什么?其中一个例子说明如下:
通过包裹parens并添加"?"使路径的一部分成为可选路径。 [原文如此]
我认为这些路径应该与给定路线匹配。
答案 0 :(得分:1)
根据this comment,你不能将params放在regexp区域内。
我认为你可以做这样的事情/a/:id/r?/:generic1?/s/:name/a
这应该与你的所有例子相匹配,并且还保留 generic1 参数。
我使用Express Route Tester验证了此解决方案。