我想使用javascript正则表达式查找所有相对URL,然后使用javascript中的字符串替换函数使它们绝对。我试着跟随,但它不起作用:(注意:我试过搜索这个网站,但找不到完美的解决方案)
data = data.replace(/\/\.(jpg|png|gif|bmp)$\/i/gi,
"http://example.com" + "$1");
我想要实现的是将相对图像URL替换为使用YQL和JSON拉取的外部数据中的绝对形式。我还发现了另一个可以完成这项工作的脚本,但它只适用于页面上的HTML元素,而不适用于包含外部加载内容的div中的内容。
除了data.replace之外的任何方法在我的情况下似乎都不起作用,我尝试了另一个完美的脚本,但只在页面html上运行,而不是外部加载的HTML。
这是我在这里的第一篇文章。任何帮助,将不胜感激。
答案 0 :(得分:2)
var html = '<html><img src="test.jpg"/><img src="/begin-with-slash.jpg"/><img src="http://absolutelink.com/test.jpg"/></html>';
html.replace(/(src=")(?!https?:\/\/)\/?/ig, '$1http://example.com/');
或强>
html.replace(/(src=")(?!https?:\/\/)\/?([^"]+\.(jpe?g|png|gif|bmp))"/ig, '$1http://example.com/$2"');
仅用于匹配图像
应解决您的问题
此正则表达式匹配src="
后面没有协议http或https,可选的斜杠是为了防止加倍斜杠,例如http://example.com//begin-with-slash.jpg
<html><img src="http://example.com/test.jpg"/><img src="http://example.com/begin-with-slash.jpg"/><img src="http://absolutelink.com/test.jpg"/></html>