我在字符串中有很多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/
请帮忙吗?
答案 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)