Express:匹配 url 语言代码的路线

Express: match route for language code in url

我正在尝试为这条路线捕获两个字符的可选 :lang? 参数:

/             // lang: undefined
/en           // lang: en
/projects     // lang: undefined
/en/projects  // lang: en

这是我的尝试:

router.get('/:lang([a-z]{2})?*', function(req, res, next) {

}

但是对于 /projects 它将 :lang? 参数设置为 pr

我怎样才能避免这种情况?

要解决这个问题,您可以尝试使用下一个模式:

/:lang([a-z]{2})?/:rest(*)?

这里引入了另一个可选参数rest来捕获这样的尾随。

您可以查看现场示例: