Javascript正则表达式替换src内容
我有一个带有src的图像标签,我想在src上预先添加一个网站url,但前提是它不以http://开头。到目前为止我有Javascript正则表达式替换src内容,javascript,regex,Javascript,Regex,我有一个带有src的图像标签,我想在src上预先添加一个网站url,但前提是它不以http://开头。到目前为止我有 content.replace(/(<img *src=")(.*?)"/, '$1' + this.websiteUrl + '$2"'); content.replace(/( 但我不知道如何做,不要从http://bit开始,使用消极的前瞻: content.replace(/(<img *src=")(?!http:\/\/)(.*?)"/, '$1' +
content.replace(/(<img *src=")(.*?)"/, '$1' + this.websiteUrl + '$2"');
content.replace(/(
但我不知道如何做,不要从http://bit开始,使用消极的前瞻:
content.replace(/(<img *src=")(?!http:\/\/)(.*?)"/, '$1' + this.websiteUrl + '$2"');
content.replace(/(如果您只是在预写一些文本,那么实际上并不需要正则表达式。只需:
if /^http:\/\//.test(img.src)
img.src = this.websiteUrl + img.src;
其中,img
是要为其更改src属性的元素
如果您没有img标记或它的父对象,但HTML格式良好,则可以使用DOMParser
获取它们:
var parser = new DOMParser();
var doc = parser.parseFromString(html, "text/XML");
var collection = doc.getElementsByTagName("img");
for (var i = 0; i < collection.length, i++){
if /^http:\/\//.test(collection[i].src)
collection[i].src = this.websiteUrl + collection[i].src;
}
var parser=new DOMParser();
var doc=parser.parseFromString(html,“text/XML”);
var collection=doc.getElementsByTagName(“img”);
对于(var i=0;i
@Guffa的模式就是答案。只需几句旁注:假设标记看起来像这样,您的模式将不起作用,请尝试以下方法:
content.replace(/(<img.+src=")(?!http:\/\/)(.*?)"/,'$1' + this.websiteUrl + '$2"');
content.replace(/(
如果你要用这个正则表达式来做一个完整的DOM(片段),考虑使用解析器代替正则表达式。例子
在我的例子中,Elias Van Ootegem提供的解决方案不起作用。
我正在使用:
content.replace(/(<img[^]+?src=")(?!http:\/\/)(.*?)"/gi,'$1' + this.websiteUrl + '$2"');
content.replace(/(
即使img标记分散在两行上,即使有多个img标记,这一条也有效,因为它并没有真正检查src是否已经以http开头,并且因为它是我滚动浏览的唯一文本,所以我没有将img作为object@Pete您是如何获得HTML的?谢谢elias,.+src的这一点非常有帮助ed告诉我你需要在img和src之间建立一个。+。干得好!