我需要匹配以下网址格式
/yc/leroy-jenkins-123
所以我需要同时匹配/yc/
部分和123
当它的/leroy-jenkins-123
与以下内容匹配时,我就可以将该网址与之匹配
server.get(/([^-]*)$/, (req, res) => {
const actualPage = '/profile'
const queryParams = { id: req.params[0] }
app.render(req, res, actualPage, queryParams)
})
所以我可以将123
与([^-]+)$
匹配,但是我也应该如何匹配/yc/
部分?
答案 0 :(得分:3)
您可以使用此正则表达式从组1和组2捕获值,
^(\/[^\/]+\/).*?(\d+)$
说明:
^
-匹配字符串的开头(\/[^\/]+\/)
-匹配/
后跟/
以外的其他任何字符,再匹配一个或多个/
并在组1中捕获该值.*?
-允许零个或多个任意字符的可选匹配(\d+)$
-匹配一个或多个数字并将其捕获在group2中,然后捕获字符串的结尾答案 1 :(得分:1)
只需与^\/\w+\/
交替:
server.get(/([^-]+)$|^\/\w+\//, ...
还要注意,您可能应该在字符串末尾重复至少一个非破折号,否则它可以与末尾的空字符串匹配,例如URL
/
并且没有其他匹配项,因为字符串末尾(至少)有零个非破折号字符,这可能是不希望的。
除非该小组实际上正在被用于某件事,否则请随意将其完全抛弃:
server.get(/[^-]+$|^\/\w+\//, ...