用RegExp替换图像源,其中另一个属性是第一个

时间:2014-01-26 13:31:07

标签: javascript html regex replace tags

我有这个例子

<img style="height:375; width:500;" src="../img/ris1_1.jpg" ALIGN="center">
<img src="img/ris1_2.jpg" style="height:375; width:500;" ALIGN="center">

我使用此RegExp替换src标记:

(?<=(<img src=['"]))[^"']+

但它只找到了src紧随其后的imgs

此外,我只需要替换相对路径,而不是绝对路径。所以如果我在src中有绝对路径,我就不能替换它。

P.S。是啊!我做完了,谢谢Shomz!就这样做:

tag.replace(/(img[^>]*src=['"])+(?!http:\/\/)\s*([^'"]*)/gi,"$1http://mydomain.com/$2");

2 个答案:

答案 0 :(得分:0)

不是仅使用搜索字符串选择img元素的src属性值,而是使用捕获搜索字符串(<img.*?src=['"])[^"']+并使用\1启动替换字符串以保留{{1}的所有内容替换为<img"

当然,如果src属性没有用于img之外的任何其他元素,你可以简单地使用搜索字符串'

Tony的建议也很好。通过搜索(?<=src=['"])[^"']+并使用替换字符串(<img)(.+?)( src=["'][^"']+["']),可以首先通过将{s}属性移动到\1\3\2之后的第一个位置来标准化所有img元素。

答案 1 :(得分:0)

如果tag是您的标记,您可以执行以下操作:

tag.replace(/(img[^>]*src=['"])+(\s*)[^'"]*/g, '$1REPLACED.jpg');

更新

要省略绝对网址,请使用此正则表达式(img[^>]*src=['"])+(?!http:\/\/)\s*[^'"]*