替换正则表达式中的img元素src属性

时间:2011-07-12 21:36:14

标签: javascript regex expression

  

解决这个问题,以防有人在这里需要它

var feed      =   feeds.entries[i].content;
var parsedFeed    =   feed.replace(/src=/gi, "tempsrc=");
var tmpHolder =   document.createElement('div');
tmpHolder.innerHTML=parsedFeed;

我有一个包含html标记的字符串,其中包含<img src='path.jpg'/>

我想对字符串运行一个正则表达式,将每个src attr替换为tmpSrc

所以

 <img src='path.jpg'/>

会变成

 <img tmpSrc='path.jpg'/>

这是javascript的方式

,这是在其他地方发布但未解决的根问题

Browser parse HTML for jQuery without loading resources

How to parse AJAX response without loading resources?

由于

5 个答案:

答案 0 :(得分:2)

如果这是您控制的字符串而不是从网页检索的HTML,那么您确实可以安全地使用正则表达式。要将<img src=的所有出现更改为<img tmpSrc=,您可以使用此操作:

var str = "<img src='path.jpg'/>";   // whatever your source string is
str = str.replace(/<img src=/gi, "<img tempSrc=");

其他海报所说的是正则表达式不适合用于从网页检索的HTML,因为不同的浏览器会返回不同形式的HTML,因此难以可靠地匹配它。但是,如果您尝试替换的字符串由您自己控制并且您可以知道它的格式,那么此正则表达式应该可以正常工作。

答案 1 :(得分:1)

使用RegExps处理HTML很容易出错。

如果您可能会在页面中包含jQuery:

$('img').each(function() {
    var src = this.src;
    $(this).attr('tmpSrc', src).removeAttr(src);
});

答案 2 :(得分:0)

function replace() {
    var images = document.getElementsByTagName('img'),
        srcValue,
        max
        i;

    for (i = 0, max = images.length; i < max; i++) {
       srcValue = images[i].getAttribute('src');
       images[i].setAttribute('tmpSrc', srcValue);
       images[i].removeAttribute('src');
    }
}

答案 3 :(得分:0)

as string:

input = " <img src='path.jpg'/>"; 
output = input.replace("src","tmpSrc"); 

使用DOM:

    e = document.getElementById("theimg");  
    e.tmpSrc = e.src;
   e.removeAttribute("src");

答案 4 :(得分:0)

查看此post explaining the problems with using regexes to parse HTML。这很棘手,可能不值得努力。我认为没有任何方法可以保证有效。