用html内容中的iframe替换youtube链接?

时间:2018-05-30 10:27:56

标签: javascript jquery html

我有一个javascript代码,可以在html页面/内容中进行搜索,并使用iframe嵌入式链接替换每个youtube链接。

这适用于普通的YouTube链接,如下所示:

https://www.youtube.com/watch?v=2xZL3WoBQzI

但是,我的html中的某些视频链接在其末尾有一个额外的变量,导致我的JavaScript代码无法正常工作。

他们是这样的:

https://www.youtube.com/watch?v=2xZL3WoBQzI&t=15s

问题在于&t=15s

这是我的代码:

$('.element').html(function(i, html) {

return html.replace(/(?:https:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)/g, '<iframe width="100%" src="https://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>');

});

有人可以就此问题提出建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以将正则表达式调整为仅查找v=之后的单词字符。

您的新正则表达式如下所示:/(?:https:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?.*v=)?(\w+)/g

最后一位从:(?:watch\?v=)?(.+)更改为(?:watch\?.*v=)?(\w+)

所以你的新代码看起来像是:

$('.element').html(function(i, html) {

return html.replace(/(?:https:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?.*v=)?(\w+)/g, '<iframe width="100%" src="https://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>');

});

编辑:哇呀!正如你所知,提出正确的正则表达式需要时间,所以也许你应该重新使用这里建议的正则表达式:Regular expression for youtube links

希望这能完成这项工作:)