【问题标题】:Regex to match URL - number at end of string, but also match characters at start of string正则表达式匹配 URL - 字符串末尾的数字,但也匹配字符串开头的字符
【发布时间】:2019-09-13 09:45:20
【问题描述】:

我需要匹配以下网址格式

/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/ 部分呢?

【问题讨论】:

    标签: javascript regex reactjs express next.js


    【解决方案1】:

    只需替换^\/\w+\/

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

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

    的 URL >
    /
    

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

    除非该组实际上被用于某些事情,否则请完全不使用它:

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

    【讨论】:

      【解决方案2】:

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

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

      Regex Demo

      说明:

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

      【讨论】:

      • 很好解释的答案++
      猜你喜欢
      • 2016-12-07
      • 1970-01-01
      • 2019-12-18
      • 2022-08-03
      • 2018-02-13
      • 2011-11-08
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      相关资源
      最近更新 更多