RegEx 匹配超过 5 个斜杠的字符串

RegEx match strings with more than 5 Slashs

我需要查找超过 5 个斜杠的 URL,并忽略尾部斜杠。

喜欢比赛

https://www.url.com/cat1/cat2/cat3/cat4/

不匹配

https://www.url.com/cat1/cat2/cat3/

这个可以胜任:

^(?:[^/\r\n]*/){6,}[^/\r\n]+

解释:

^               : beginning of line
  (?:           : start non capture group
    [^/\r\n]*   : 0 or more any character that is not a slash or a linebreak
    /           : 1 slash
  ){6,}         : end group, must appear 6 or more times
  [^/\r\n]+     : 1 or more any character that is not a slash or a linebreak

假设您的源文本只包含一个 URL 和 仅此而已,您可以使用:

^((?:[^\/]*\/){6,}[^\/]+)\/?$

描述:

  • ^ - 字符串的开头。
  • ( - 捕获组的开始,包含:
    • (?: - 非捕获组的开始,由于 它后面的量词。
    • [^\/]*\/ - / 以外的字符序列(可能为空) 和 /.
    • ){6,} - 非捕获组结束,必须出现 6 或 更多次。
    • [^\/]+ - / 以外的字符序列,这次是非空的。
  • ) - 捕获组结束。
  • \/? - 尾部斜杠(如果有)。
  • $ - 字符串结尾。

整个匹配包含整个 URL 并且捕获组包含 您真正感兴趣的 - URL 没有 尾随 斜杠(如果有的话)。