解决这个问题,以防有人在这里需要它
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?
由于
答案 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。这很棘手,可能不值得努力。我认为没有任何方法可以保证有效。