Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式仅适用于某些网站_Javascript_Regex_Youtube - Fatal编程技术网

Javascript正则表达式仅适用于某些网站

Javascript正则表达式仅适用于某些网站,javascript,regex,youtube,Javascript,Regex,Youtube,我对正则表达式不是很在行,所以我希望有人能帮我想出一些适合我所要做的事情,那就是: 我希望它在以下情况下匹配(仅适用于youtube链接): www.youtube.com/watch?v=oHg5SJYRHA0 youtube.com/watch?v=oHg5SJYRHA0 www.youtu.be/oHg5SJYRHA0 youtu.be/oHg5SJYRHA0 同样在前三个例子中,它应该匹配任何域名结尾,所以不仅仅是.com 当我问这个问题时,我还需要能够单独获得视频ID 这应该可以做

我对正则表达式不是很在行,所以我希望有人能帮我想出一些适合我所要做的事情,那就是:

我希望它在以下情况下匹配(仅适用于youtube链接):


www.youtube.com/watch?v=oHg5SJYRHA0
youtube.com/watch?v=oHg5SJYRHA0

www.youtu.be/oHg5SJYRHA0
youtu.be/oHg5SJYRHA0

同样在前三个例子中,它应该匹配任何域名结尾,所以不仅仅是.com


当我问这个问题时,我还需要能够单独获得视频ID

这应该可以做到:

(?:http://)?(?:www\.)?youtu(?:\.be|be.com)/(?:watch\?v=)?([\d\w]+)

第一个捕获的组是视频id。您可以在此处进行测试:。

这应该可以做到:

(?:http://)?(?:www\.)?youtu(?:\.be|be.com)/(?:watch\?v=)?([\d\w]+)

第一个捕获的组是视频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

您可以执行以下操作:

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

从来没有想过那样做,太完美了,谢谢。从来没有想过那样做,太完美了,谢谢。