Jam*_* P. 2 javascript regex youtube jquery extraction
以下代码用于获取Youtube视频ID以获取缩略图图像.
第一个正则表达式背后的原因是什么?它究竟做了什么?它似乎至少返回了两个结果.还有,两者可以合并吗?
else if(url.match("youtube.com/")){
var vid;
var results;
//http://www.youtube.com/watch?v=GItD10Joaa0
results = url.match("[\\?&]v=([^&#]*)");
vid = ( results === null ) ? url : results[1];
return "http://img.youtube.com/vi/"+vid+"/2.jpg";
} else if( url.match("youtu.be/") ) {
var vid;
var results;
// http://youtu.be/5uxd-521uus?hd=1
// results = url.match("[^http://youtu.be/](.*)[^?hd=1]");
// Corrected
results = url.match(""^http://youtu.be/(.*)(?=hd=1)");
//alert(results[0]);
vid = ( results === null ) ? url : results[0];
return "http://img.youtube.com/vi/"+vid+"/2.jpg";
}
Run Code Online (Sandbox Code Playgroud)
"[\\?&]v=([^&#]*)"
Run Code Online (Sandbox Code Playgroud)
解释(从JavaScript字符串缩减为正则表达式后):
[\?&] # Match a ? or a & (the backslash is unnecessary here!)
v= # Match the literal text "v="
( # Capture the following into backreference no. 1:
[^&#]* # Zero or more characters except & or #
) # End of capturing group.
Run Code Online (Sandbox Code Playgroud)
第二个正则表达式[^http://youtu.be/](.*)[^?hd=1]非常错误.
它可能应该阅读
"^http://youtu.be/(.*)(?=hd=1)"
Run Code Online (Sandbox Code Playgroud)