我有一个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>');
});
有人可以就此问题提出建议吗?
提前致谢。
答案 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
希望这能完成这项工作:)