Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式替换src内容_Javascript_Regex - Fatal编程技术网

Javascript正则表达式替换src内容

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' +

我有一个带有src的图像标签,我想在src上预先添加一个网站url,但前提是它不以http://开头。到目前为止我有

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之间建立一个。+。干得好!