Javascript Vue路由和正则表达式模式

Javascript Vue路由和正则表达式模式,javascript,vue.js,vue-router,Javascript,Vue.js,Vue Router,我正在使用Vue,最近引入了一个带有参数的路由 const routes = [ { path: "/:lang(^$|^es$|^pt$|^cn$)", name: "Home", component: Page, }, { path: "/privacy", name: "Privacy", component: Privacy, }, { path: "*", name: "NotFound", c

我正在使用Vue,最近引入了一个带有参数的路由

const routes = [
  {
    path: "/:lang(^$|^es$|^pt$|^cn$)",
    name: "Home",
    component: Page,
  },
  {
    path: "/privacy",
    name: "Privacy",
    component: Privacy,
  },
  {
    path: "*",
    name: "NotFound",
    component: NotFound,
  }
];
我希望在满足以下条件之一时触发路由

  • 郎是空的
  • lang是esptcn,但不是这些的组合
  • 其他的都应该按路线走

    我上面使用的正则表达式在的javascript引擎上工作


    我尝试了各种各样的方法使它在Vue中工作,但到目前为止没有任何效果。

    我相信您需要的方法是:

    路径:/:lang(| es | pt | cn), 这里有一个路由测试仪,它使用与Vue相同的库:

    确保您是针对regexp的
    路径进行测试的
    0.1.7


    问题是整个路径被转换为RegExp,而不仅仅是括号中的位。所以你的
    ^
    永远不会匹配任何东西。尝试将原始路径放入测试工具中,查看它是如何编译的。生成的RegExp已经包含它自己的
    ^
    $
    ,但它们与整个路径相关,而不仅仅是您试图匹配的参数。

    嗨,这绝对是一个开始,它不允许参数为空<代码>路径:“/:lang(es | pt | cn)?”是我现在使用的-添加?但最后,它是可选的。我不知道regex和?可以组合。@NorbertHüthmayr我建议的路径应该允许空值。我自己在一个Vue应用程序中尝试过,它似乎工作得很好。注意
    es
    前面的