基本上,我正在尝试编写一个与以下网址匹配的正则表达式:

https://www.youtube.com/playlist?list=PLBOh8f9FoHHjOz0vGrD20WcTtJar-LOrw

但不是这样的网址:

https://www.youtube.com/watch?v=4jduuQh-Uho&list=PLBOh8f9FoHHjOz0vGrD20WcTtJar-LOrw&index=3

我试图写一个匹配的内容,如果有一个list=却没有v=,但它匹配两个URL。

最佳答案

这是使用正则表达式字符串test函数和以下正则表达式模式进行此操作的方法:

^(?!.*\?.*\bv=)https:\/\/www\.youtube\.com\/.*\?.*\blist=.*$




// case one, a failing url with a v= query parameter
var url1 = 'https://www.youtube.com/watch?v=4jduuQh-Uho&list=PLBOh8f9FoHHjOz0vGrD20WcTtJar-LOrw&index=3';
console.log(/^(?!.*\?.*\bv=)https:\/\/www\.youtube\.com\/.*\?.*\blist=.*$/.test(url2));

// case two, a passing URL with list= and no v=
var url2 = 'https://www.youtube.com/playlist?list=PLBOh8f9FoHHjOz0vGrD20WcTtJar-LOrw';
console.log(/^(?!.*\?.*\bv=)https:\/\/www\.youtube\.com\/.*\?.*\blist=.*$/.test(url2));





该模式使用否定前瞻来排除所有具有v=查询参数的URL。然后,它与确实具有list=查询参数的URL匹配。

关于javascript - 使用正则表达式匹配youtube播放列表网址,而不匹配播放列表中的歌曲,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57218043/

10-16 15:35