正在获取 YouTube 视频、频道或 none
Fetching YT video, channel or none
给定一个 url 列表,我如何将它分成 3 个总和列表?
一个用于 YT 视频,第二个用于 YT 频道,第三个用于所有其他?
const paragraph1 = 'www.youtube.com/watch?v=NsjeEt1ZpqQ';
const regex1 = /www.youtube.com/(\c*)(watch?v=)?<videoId>[A-Z,0-9])/gi;
const paragraph2 = 'https://www.youtube.com/channel/UCKqFqiCe1dCUxRe0_YNZ6gg';
const regex2 = /www.youtube.com/channel/?<channelId>[A-Z,_,0-9])/gi;
const found = paragraph1.match(regex1);
console.log(found);
// expected output: Array ["T", "I"]
const found = paragraph2.match(regex2);
console.log(found);
已尝试在此 site 上进行沙盒处理。
由于您打算将一些 URL 字符串列表拆分为三个不同的部分,您可以使用三种不同的模式:
www\.youtube\.com\/watch\?v=(?<videoId>\S+)
www\.youtube\.com\/channel\/(?<videoId>\S+)
www\.youtube\.com(?!\/(?:channel\/|watch\?v=))\S*
查看 regex #1, regex #2 and regex #3 演示。请注意,您需要一个符合 ECMAScript 2018+ 的 JavaScript 环境才能使命名的捕获组工作。另外,请注意点在它们表示文字点的任何地方都被转义了。
模式的意思
www\.youtube\.com\/watch\?v=
- 文字 www.youtube.com/watch?v=
字符串
(?<videoId>\S+)
- 组“videoId”:一个或多个 non-whitespace 个字符
www\.youtube\.com\/channel\/(?<videoId>\S+)
- 文字 www.youtube.com/channel/
字符串,然后组“videoId”捕获一个或多个 non-whitespace 个字符
www\.youtube\.com(?!\/(?:channel\/|watch\?v=))\S*
- www.youtube.com
字符串,然后是匹配失败的否定前瞻,如果紧靠右侧有一个 /
字符,则 channel/
或watch?v=
,然后消耗零个或多个 non-whitespace 个字符。
如果您打算再次对某些 mark-up 文本使用这些模式,请确保从 \S
模式中减去 mark-up 个字符,即将其更改为否定字符class 与反向 shorthand、[^\s]
,并在 \s
之后添加字符。比如说,如果链接在双引号内,请将 "
放在那里,[^\s"]
.
给定一个 url 列表,我如何将它分成 3 个总和列表?
一个用于 YT 视频,第二个用于 YT 频道,第三个用于所有其他?
const paragraph1 = 'www.youtube.com/watch?v=NsjeEt1ZpqQ';
const regex1 = /www.youtube.com/(\c*)(watch?v=)?<videoId>[A-Z,0-9])/gi;
const paragraph2 = 'https://www.youtube.com/channel/UCKqFqiCe1dCUxRe0_YNZ6gg';
const regex2 = /www.youtube.com/channel/?<channelId>[A-Z,_,0-9])/gi;
const found = paragraph1.match(regex1);
console.log(found);
// expected output: Array ["T", "I"]
const found = paragraph2.match(regex2);
console.log(found);
已尝试在此 site 上进行沙盒处理。
由于您打算将一些 URL 字符串列表拆分为三个不同的部分,您可以使用三种不同的模式:
www\.youtube\.com\/watch\?v=(?<videoId>\S+)
www\.youtube\.com\/channel\/(?<videoId>\S+)
www\.youtube\.com(?!\/(?:channel\/|watch\?v=))\S*
查看 regex #1, regex #2 and regex #3 演示。请注意,您需要一个符合 ECMAScript 2018+ 的 JavaScript 环境才能使命名的捕获组工作。另外,请注意点在它们表示文字点的任何地方都被转义了。
模式的意思
www\.youtube\.com\/watch\?v=
- 文字www.youtube.com/watch?v=
字符串(?<videoId>\S+)
- 组“videoId”:一个或多个 non-whitespace 个字符www\.youtube\.com\/channel\/(?<videoId>\S+)
- 文字www.youtube.com/channel/
字符串,然后组“videoId”捕获一个或多个 non-whitespace 个字符www\.youtube\.com(?!\/(?:channel\/|watch\?v=))\S*
-www.youtube.com
字符串,然后是匹配失败的否定前瞻,如果紧靠右侧有一个/
字符,则channel/
或watch?v=
,然后消耗零个或多个 non-whitespace 个字符。
如果您打算再次对某些 mark-up 文本使用这些模式,请确保从 \S
模式中减去 mark-up 个字符,即将其更改为否定字符class 与反向 shorthand、[^\s]
,并在 \s
之后添加字符。比如说,如果链接在双引号内,请将 "
放在那里,[^\s"]
.