正则表达式匹配 URL - 字符串末尾的数字,但也匹配字符串开头的字符

Regex to match URL - number at end of string, but also match characters at start of string

我需要匹配以下URL格式

/yc/leroy-jenkins-123

所以我需要同时匹配 /yc/ 部分和 123

我可以将 URL 的 /leroy-jenkins-123 与以下

相匹配
server.get(/([^-]*)$/, (req, res) => {
    const actualPage = '/profile'
    const queryParams = { id: req.params[0] }
    app.render(req, res, actualPage, queryParams)
})

所以我可以将 123([^-]+)$ 匹配,但是如何匹配 /yc/ 部分呢?

只需交替使用 ^\/\w+\/:

server.get(/([^-]+)$|^\/\w+\//, ...

另请注意,您可能应该在字符串末尾之前重复 至少一个 非破折号字符,否则它可以匹配末尾的空字符串,例如 a URL 个

/

没有其他匹配项,因为字符串末尾有(至少)零个非破折号字符,这可能是不可取的。

除非该组实际用于某些用途,否则请完全将其关闭:

server.get(/[^-]+$|^\/\w+\//, ...

您可以使用此正则表达式捕获 group1 和 group2 的值,

^(\/[^\/]+\/).*?(\d+)$

Regex Demo

解释:

  • ^ - 匹配字符串的开头
  • (\/[^\/]+\/) - 匹配 / 后跟 / 以外的任何字符,一个或多个后跟 / 并在 group1[=34 中捕获此值=]
  • .*? - 允许可选匹配零个或多个任意字符
  • (\d+)$ - 匹配一个或多个数字并将其捕获在 group2 中,后跟字符串结尾