我需要排除輸入字符串中的所有鏈接,但允許圖像鏈接。正則表達式匹配圖像鏈接,但排除正常的網址?
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