vue-router path-to-regexp与可选路由路径参数组不匹配

时间:2018-03-06 19:45:44

标签: javascript regex vue.js vuejs2 vue-router

简介

我正在与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并添加"?"使路径的一部分成为可选路径。 [原文如此]

我认为这些路径应该与给定路线匹配。

1 个答案:

答案 0 :(得分:1)

根据this comment,你不能将params放在regexp区域内。

我认为你可以做这样的事情/a/:id/r?/:generic1?/s/:name/a这应该与你的所有例子相匹配,并且还保留 generic1 参数。

我使用Express Route Tester验证了此解决方案。