javascript正则表达式替换函数删除其他内容

时间:2018-03-29 14:41:50

标签: javascript regex

我有一个内容(字符串),在某些部分包含youtube的完整网址,而在其他部分只包含视频ID。 我需要用视频ID替换全长的YouTube网址。 var" content"例如。



var content = '{GENERICO:type="youtube",id="DluFA_AUjV8"}{GENERICO:type="youtube",id="https://youtu.be/DluFA_AUjV8"}';

var myRegex = /{GENERICO:type="youtube",id=".*?(?:youtube\.com|youtu\.be)\/(?:embed\/|watch\?v\=)?([^\&\?\/\"]+).*?["&\?]}/gi;

content = content.replace(myRegex, '{GENERICO:type="youtube",id="$1"}' );

console.log(content);




我想要实现的结果(在示例中)是:

{GENERICO:type="youtube",id="DluFA_AUjV8"}{GENERICO:type="youtube",id="DluFA_AUjV8"}

我实际得到的是以下内容:

the result I want to achieve (in the example) is:

{GENERICO:type="youtube",id="DluFA_AUjV8"}

由于某种原因,它删除了内容中的一个字符串。 我无法弄清楚它是javascript问题还是正则表达式问题,或者我做错了什么。

这是jsfiddle

1 个答案:

答案 0 :(得分:0)

使用content.replace(new RegExp('https://youtu.be/','g'), '')进行全局替换。

var content = '{GENERICO:type="youtube",id="DluFA_AUjV8"}{GENERICO:type="youtube",id="https://youtu.be/DluFA_AUjV8"}';

console.log(content.replace(new RegExp('https://youtu.be/','g'), ''))