2012-06-25 28 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