修改:建议的问题/答案无法解决我的问题:让我改写一下:找到<img src="
和" />"
之间的字符串,并将其替换为原始字母加上另一个字符串像?w=500
这样的字符串。我认为这可能适用于正则表达式,但我也乐意以任何JS方式进行。我在这个上下文中没有jQuery ....
假设我有一个包含图像标记标记的字符串,其中包括:
<img src="supercool.jpg" />
<p>very cool</p>
<img src="mega.jpg" />
我如何使用正则表达式或其他方法将每个src属性附加一个给定的字符串(比如?w=500
),以便我最终得到
<img src="supercool.jpg?w=500" />
<p>very cool</p>
<img src="mega.jpg?w=500" />
我在SO上看过类似的问题但是还没有设计出解决方案,我的正则表达式技巧太差了:)
答案 0 :(得分:1)
我正在使用字符串替换共享一些PHP代码可能这可以帮到你。 用单引号将所有代码放在变量中,然后用.jpg替换jpg?w = 500。并使用纯文本设置标题。
Cells(Rows.Count,14)
答案 1 :(得分:1)
RegEx不了解元素或属性,因此以下正则表达式非常脆弱。它只查找src=""
并将给定的字符串附加到引号之间的任何内容。对于一次性脚本,这应该足够了。对于任何更复杂的东西,使用适当的HTML解析器,如SAX或DOM。
var in = '<img src="asd.png" /> <img src="ddd.jpeg" />';
var out = in.replace(/src=\"(.*?)\"/g, "src=\"$1?w=500\"");
出:
<img src="asd.png?w=500" /> <img src="ddd.jpeg?w=500" />
如果你想在浏览器中尝试这样做(你没有指定),你需要这样的东西(jQuery):
$("img[src]").each(function() {
this.src = this.src + "?w=500";
});
答案 2 :(得分:1)
基于this @Gumbo answer并假设您提供的字符串,img
标记在src
之前没有任何额外属性,您可以应用此RegEx。
let str = '<img src="supercool.jpg" /><p>very cool</p><img src="mega.jpg" />';
let res = str.replace(/<img src="(?:[^"\/]*\/)*([^"]+)"/g, '<img src="$1?w=500"');
console.log(res);
如果您不需要任何额外的考虑因素,您的问题看起来更像是我链接到您的问题的副本。
答案 3 :(得分:0)
对于非常简单的情况,您可以使用reg exp来匹配基本HTML,但是一旦它变得复杂,reg exp就是个坏主意。有时您需要清理一些代码并且工作正常。
根据您的情况,您的html结构很简单,因此您可以进行匹配。
var txt = document.getElementById("in").value;
var result = txt.replace(/(<img.*\ssrc=['"])([^'"]+)/g, function(m, l, s){
return m + (s.indexOf("?")!=-1 ? "&" : "?") + "w=500";
});
document.getElementById("out").value = result;
<textarea id="in" rows="4" cols="50">
<img src="supercool.jpg" />
<p>very cool</p>
<img src="mega.jpg?foo=bar" />
<img alt="boo" src="mega.jpg" />
</textarea>
<textarea id="out" rows="4" cols="50"></textarea>
但它可以很容易地破解....你最好创建一个DOM片段,使用DOM并更改属性。 DOM解决方案的问题是它会尝试加载图像,这是我认为你首先想要避免的。