Javascript 匹配图像链接但排除正常url的正则表达式?
我需要从输入字符串中排除所有链接,但允许图像链接 =>允许 =>不允许 因此,假设输入字符串如下Javascript 匹配图像链接但排除正常url的正则表达式?,javascript,regex,Javascript,Regex,我需要从输入字符串中排除所有链接,但允许图像链接 =>允许 =>不允许 因此,假设输入字符串如下 <p>http://example.com/abc.jpg</p><img src='http://example.com/abc.jpg'/>http://example.com/222.jpg http://example.com/xyz.aspx <a url='http://example.com/abc'/> 更新: 我使用jquery将
<p>http://example.com/abc.jpg</p><img src='http://example.com/abc.jpg'/>http://example.com/222.jpg http://example.com/xyz.aspx <a url='http://example.com/abc'/>
更新:
我使用jquery将html解析为html标记,并对每个html节点内容进行测试
var str=“http://example.com/abc.jpghttp://example.com/xyz.aspx?id=2 http://example.com/xyz.aspx?jpg=2
http://example.com/xyz.aspx?jpg=2http://example.com/xyz.aspx?jpg=20 ",
html=$.parseHTML(str),$log=$(“#log”);
var regex=/^http[^\!@$\^&(\)\+=]+(\.png\.jpeg\.gif\.jpg)$/;
$.each(html,function(i,el){
var src='';
开关(el.nodeName)
{
案例“IMG”:
src=el.src;中断;
大小写“#text”:src=el.textContent;break;
默认值:src=el.innerHTML;
}
log(el.nodeName+'-'+src+'-'+regex.test(src));
});代码>
您可以尝试以下正则表达式:
^http.+(png|jpeg|gif|jpg)$
这要求字符串以http
开头,以指定的格式之一结尾
var regex=/^http[^\!@$\^&(\)\+\=]+(\.png\.jpeg\.gif\.jpg)$/;
var测试=[
"https://www.example.com/X00132BhJk.jpg",
"http://www.example.com/search?ident=X00132BhJk" ,
“http://example.com”,
“http://sample.png”,
"http://test.com/png"
]
对于(变量i=0;i }
使用以下正则表达式模式(用于多个URL):
两个注意事项:
这不会检查整个字符串以确保它是一个有效的URL,在线上还有很多其他关于验证URL的资源
不可能确保链接实际指向图像,这只能通过向该URL发送请求并查看返回的资源类型来实现
考虑到这两个警告,你已经非常接近了。您所需要的只是在字符串的开头放一个^
,在末尾放一个$
,以确保jpg
或png
是字符串中的最后一个字符。我还在jpg中添加了可选的e
,您可以添加所有其他图像文件扩展名,如gif
,bmp
,等等:
^https?:\/\/.+\.(?:png|jpe?g)$
无法判断URL是否引用URL本身的图像内容-您只能通过mimetype和URL返回的内容来确定这一点。你需要一个更好的问题陈述。谢谢,我想我会有一个方法来增强这一点,因为有时候,人们试图欺骗系统,只是键入空白的http://example.com,而不是真正的锚链接。在这种情况下,你可以尝试[^@^&*\(\)\+]+
而不是+
谢谢你的帮助,我已经更新了代码。很好的结果。问题是,并不是所有的图像都以扩展结尾。有些人可能已经得到了参数后。
\bhttps?:\/\/\S*?\/[^\/.]+\.(jpg|png)\b
^https?:\/\/.+\.(?:png|jpe?g)$