基本上,我正在尝试编写一个与以下网址匹配的正则表达式: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/