javascript正则表达式url替换

时间:2012-01-05 15:01:35

标签: javascript regex match

我需要使用javascript将&wmode=transparent附加到我的博客上的所有youtube iframe嵌入。

因此...

<iframe src="http://www.youtube.com/embed/7jW_0IQWOQg?rel=0"></frame>

需要改为:

<iframe src="http://www.youtube.com/embed/7jW_0IQWOQg?rel=0&wmode=transparent"></frame>

所以我想我需要匹配一个youtube embed url,然后将它追加到url的末尾...我怎样才能匹配url的结尾?

修改

我正在使用nodejs,因此没有DOM。

我正在尝试检查博客中单个帖子的全部内容。因此字符串将包含text / image html以及可能包含多个youtube嵌入。

3 个答案:

答案 0 :(得分:2)

这样的事情怎么样:

var iframes = document.getElementsByTagName("iframe"),
    i,
    len,
    src;

for (i = 0, len = iframes.length; i < len; i++) {
    src = iframes[i].src;
    if (src.indexOf("http://www.youtube.com/embed") > -1) {
        iframes[i].src = src + "&wmode=transparent";
    }
}

如果您无法访问DOM(即您正在搜索String),那么您可以使用以下内容:

str = str.replace(/http:\/\/www.youtube.com\/embed\/(.*?)"><\/iframe>/g, function (a, b) {
    return ['http://www.youtube.com/embed/', b, '&wmode=transparent"></iframe>'].join("");
});

这是working example

答案 1 :(得分:1)

答案 2 :(得分:0)

好吧,要查看它是否是YouTube网址,您只需检查其中是否有“youtube”。如果有,则附加参数。不确定你的意思是字符串中可能有多个URL。但是,可能没有任何参数,因此您需要使用?而不是&。在这种情况下,只需使用indexOf来检查您应该使用的内容。

var iframes = document.getElementsByTagName("iframe");
for(var i = 0; i < iframes ; i++) {
    var iframe = iframes [i];
    if (iframe.src.indexOf("youtube") >= 0)
        iframe.src += "&wmode=transparent";
}