从内容中提取来自youtube网址的视频ID

时间:2018-04-16 13:06:08

标签: javascript regex

我在字符串中有很多youtube网址。 那些youtube网址只是视频ID,但由于错误,我有网址,需要能够删除垃圾,只保留id而不触及任何其他内容。 我需要在JavaScript中执行此操作。

这是内容的一个例子:

"pre text videoid=https://www.youtube.com/watch?v=CF1zRWVdDnA videoid=https://www.youtube.com/embed/u4x9YyRnFDE?start=54 videoid=https://youtu.be/loyfGyvpv1o, post text"

这就是我想要实现的结果:

"pre text videoid=CF1zRWVdDnA videoid=u4x9YyRnFDE videoid=loyfGyvpv1o, post text"

这是我尝试过的几乎完成它的代码:



var content = "pre text videoid=https://www.youtube.com/watch?v=CF1zRWVdDnA videoid=https://www.youtube.com/embed/u4x9YyRnFDE?start=54 videoid=https://youtu.be/loyfGyvpv1o, post text";

result = content.replace(/ [^\}\"\']*?(?:youtube\.com|youtu\.be)\/(?:embed\/|watch\?v\=)?/gi, 'videoid=1');




正则表达式无法得到这个:

https://www.youtube.com/embed/u4x9YyRnFDE?start=54

所以我猜它是一个正则表达式问题,而不是一个javascript问题。 但我也需要能够从具有该模式的id中获取id。

这是jsFiddle:https://jsfiddle.net/a8g8a9mp/10/

请帮忙吗?

1 个答案:

答案 0 :(得分:0)

你可以使用这个正则表达式,它是一个或多或少的原始字符串列表



var content = "pre text videoid=https://www.youtube.com/watch?v=CF1zRWVdDnA videoid=https://www.youtube.com/embed/u4x9YyRnFDE?start=54 videoid=https://youtu.be/loyfGyvpv1o, post text";

result = content.replace(/https:\/\/www\.youtube\.com|https:\/\/youtu\.be\/|\/watch\?v\=|\/embed\/|\?start=[0-9]+/gi, '');

console.info(result)