以下代码用于获取 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";
}
"[\\?&]v=([^&#]*)"
解释(从 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.
第二个正则表达式[^http://youtu.be/](.*)[^?hd=1]
是非常错误的。
它可能应该读
"^http://youtu.be/(.*)(?=hd=1)"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)