我正在制作一个jquery插件,它将嵌入来自youtube和vimeo(以及最终其他网站)的视频。现在我有这个代码:
(function($) {
$.fn.embedFrame = function() {
var youtube = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
var vimeo = /(?:http?s?:\/\/)?(?:www\.)?(?:vimeo\.com)\/?(.+)/g;
this.filter("a").html(function() {
// CHECK IF THE LINK HREF MATCHES ANY OF THE ABOVE REGEX VARIABLE RULES
// IF THE HREF MATCHES, RETURN AN IFRAME EMBED OF THE VIDEO
});
return this;
};
}(jQuery));
我有几个问题:
href
是否符合任何正则表达式规则?感谢。
答案 0 :(得分:1)
将正则表达式保存在数组或对象中,然后迭代并检查链接是否与其中任何一个匹配
(function($) {
$.fn.embedFrame = function() {
var filter = {
youtube : /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/,
vimeo : /(?:http?s?:\/\/)?(?:www\.)?(?:vimeo\.com)\/?(.+)/g
}
var videos = this.filter(function(_, el) {
if ( el.tagName.toLowerCase() !== 'a' ) return false;
return Object.keys(filter).some(function(reg) {
return filter[reg].test( el.href );
});
});
return this;
};
}(jQuery));