我对正则表达式的理解不是很好,所以我希望有人可以帮忙提出一些适合我尝试做的事情,即:
我希望它在以下情况下匹配(仅适用于youtube链接):
http://www.youtube.com/watch?v=oHg5SJYRHA0
www.youtube.com/watch?v=oHg5SJYRHA0
youtube.com/watch?v=oHg5SJYRHA0
http://youtu.be/oHg5SJYRHA0
www.youtu.be/oHg5SJYRHA0
youtu.be/oHg5SJYRHA0
同样在前三个示例中,它应该匹配任何以域名结尾的域名,因此不只是.com
当我问这个问题时,我还需要能够单独获得视频ID。
最佳答案
您可以执行以下操作:
function getYoutubeId(str) {
var check;
check = /youtu.be\/(\w+)/.exec(str);
if(check) return check[1];
check = /youtube\.com\/.*v=(\w+)/.exec(str);
if(check) return check[1];
return null;
}
getYoutubeId("http://www.youtube.com/watch?v=oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId("www.youtube.com/watch?v=oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId("youtube.com/watch?v=oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId("http://youtu.be/oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId("www.youtu.be/oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId("youtu.be/oHg5SJYRHA0"); // oHg5SJYRHA0
getYoutubeId(""); // null
getYoutubeId("google.com"); // null
getYoutubeId("youtu.be/"); // null
getYoutubeId("youtube.com/?other=something"); // null