在Vue路由器路径中使用Regex

San*_*jay 3 javascript vue.js vue-router

我正在创建一个大量使用vue路由器的VueJS应用程序.

这是我的结构routes.js:

export const routes = [
    { path: '', component: Poetry, children: [
        { path: '', name: 'poetry', component: PoetryLanding },
        { path: 'poetry/:id', name: 'poetrycard', component: PoetryCard },
        { path: 'poetry/search', name: 'poetrysearch', component: PoetrySearch },
    ]},
]
Run Code Online (Sandbox Code Playgroud)

我想在第二个子组件中使用正则表达式,即poetrycard它只接受作为数字的params(:id).我这样做是因为poetrysearch/search视为受到影响:id!

我试过了:

{ path: 'poetry/:id/[0-9]/g', name: 'poetrycard', component: PoetryCard }
Run Code Online (Sandbox Code Playgroud)

但这不起作用.请帮忙.

Vam*_*hna 9

vue-router使用path-to-regexp作为其路径匹配引擎,因此它支持许多高级匹配模式,例如可选动态段,零个或多个/一个或多个要求,甚至自定义正则表达式模式.

因此,请按如下方式更改路径定义:

{ path: 'poetry/:id(\\d+)', name: 'poetrycard', component: PoetryCard }
Run Code Online (Sandbox Code Playgroud)

参考 - 高级匹配模式