首页 > 解决方案 > 使用正则表达式以正确的方式将 Youtube 频道主页重定向到视频部分

问题描述

我使用Requestly制定了一个正则表达式规则,每次我进入 youtube 频道时,它都会将我重定向到视频部分。我制定的规则是这样的:

/https\:\/\/www\.youtube\.com\/channel\/(.+)/ig

替换为:

https://www.youtube.com/channel/$1/videos

将此作为测试字符串:

https://www.youtube.com/channel/random_name1234

,我明白了:

https://www.youtube.com/channel/random_name1234/videos

当我错误地刷新页面时,问题就来了。因此,如果 URL 已经是:

https://www.youtube.com/channel/random_name1234/videos

,我得到:

https://www.youtube.com/channel/random_name1234/videos/videos

如果我在频道的播放列表部分并刷新页面,我会得到:

https://www.youtube.com/channel/random_name1234/playlists/videos

如何通过修改正则表达式模式来解决这个问题?我有几次尝试,但我失败了,因为我不太擅长正则表达式。

谢谢!

标签: regex

解决方案


问题是它.*会匹配任何东西——包括如果你已经在/videos页面上,或者像/playlist,/community等其他部分。

您可以通过说“仅匹配非正斜杠字符”来使正则表达式更具限制性,以确保相关 URL 实际上是主频道页面。

试试这个:

/https\:\/\/www\.youtube\.com\/channel\/([^\/]+)\/?$/ig
  • [^\/]+表示“一个或多个不是正斜杠的字符”。
  • \/?表示“可选的正斜杠”,以防 URL 末尾有尾随。
  • $表示“字符串结尾”,因此正则表达式不会匹配较长的 URL,例如https://www.youtube.com/channel/xxxxx/about

推荐阅读