2012-06-25 30 views
0

我想要匹配所有URL但排除與該正則表達式匹配的圖像url:jpe?g | gif | png。 (?:https?| ftp | file):// [-A-Z0-9 + & @#/%?=〜_ | $!:,。;] * A-Z0-9 + & @#/%=〜_ | $匹配所有網址排除jpg,gif,png

的問題是,與排除部分不工作是這樣的:(?!?JPE G | GIF | PNG)

有沒有人有一個解決方案爲了它?

例子:

不Matchen:

http://example.com/example.jpg 
http://example.com/example231/example.gif 

比賽:

http://example.com/example.html 
http://example.com/example/?id=4331 
http://example.com/example/example/ex_ample/ex-ample/?id=4331 

回答

3

只是(?!.*(?:\.jpe?g|\.gif|\.png)$)開始你的正則表達式,

因此,如果您當前的正則表達式是\b(?:https?|ftp|file)://...,然後合併它到

(?!.*(?:\.jpe?g|\.gif|\.png)$)\b(?:https?|ftp|file)://...

讀也PHP URL validation

+0

很好的簡單的工作解決方案很多謝謝:) – Nicy

0

我工作在這個問題上是得到了封閉的最近重複的問題,所以我將它張貼在這裏:

((?!.*(png|jpg|gif)(?!.))(?:https?|file|ftp):\/\/.*.\.(?:com|ca|net|museum|org|co\.uk))

隨意如果合適的話,添加更多的協議,更多的圖片擴展(如果適用)以及更多頂級域名(如果適用)。

Tested on regex101