我需要排除输入字符串中的所有链接,但允许图像链接。正则表达式匹配图像链接,但排除正常的网址?
https://www.example.com/X00132BhJk.jpg =>允许
http://www.example.com/search?ident=X00132BhJk =>不允许
所以,假定输入字符串等
<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'/>
应当仅允许在P含量,IMG标签,从文本标签其他的并且链接应该通过测试。
我怎样才能实现与正则表达式这个结果,我不擅长的正则表达式在所有!
From http://regexr.com/
/(https?:\/\/.*\.(?:png|jpg))/i
=> looks like matches image link, still need a way to exclude normal link without .png, jpg, gif...
UPDATE:
我使用jQuery解析HTML成HTML标签,并测试每个节点的HTML内容。
var str ="<p>http://example.com/abc.jpg</p><img src='http://example.com/abc.jpg'/> http://example.com/xyz.aspx?id=2 <a url='http://example.com/jpg/3'/><div id='abcd'>http://example.com/xyz.aspx?jpg=2 <br/> http: // example.com/xyz.aspx?jpg=2</div>http://example.com/xyz.aspx?jpg=20 ",
html = $.parseHTML(str),$log = $("#log");
var regex = /^http[^ \[email protected]\$\^&\(\)\+\=]+(\.png|\.jpeg|\.gif|\.jpg)$/;
$.each(html, function(i,el) {
var src='';
switch(el.nodeName)
{
case 'IMG':
src = el.src;break;
case '#text': src= el.textContent;break;
default: src=el.innerHTML;
}
console.log(el.nodeName + ' - ' + src + ' - ' + regex.test(src));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
这是不可能告诉我们,如果从URL本身的URL引用图像内容 - 您只能从网址返回的mimetype和内容中确定。你需要一个更好的问题陈述。 – symcbean