匹配所有url,不包括jpg,gif,png
我想匹配所有url但排除与该正则表达式匹配的图像url:jpe?g | gif | png。
(?:HTTPS | FTP |文件):\ b // [?-A-Z0-9 + @#/%=〜_ | $!。;] * A-Z0-9 + @# /%=〜_ | $
问题是带有排除的部分不是这样的:(?!jpe?g | gif | png)
有人有解决方案吗?
例:
不是马辰:
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
用(?!.*(?:\.jpe?g|\.gif|\.png)$)
开始你的正则表达式,
所以如果你当前的正则表达式是\b(?:https?|ftp|file)://...
,那么将它合并到
(?!.*(?:\.jpe?g|\.gif|\.png)$)\b(?:https?|ftp|file)://...
另请阅读PHP URLvalidation
我正在解决这个问题,因为最近一个重复的问题已经关闭,所以我将在这里发布:
((?!.*(png|jpg|gif)(?!.))(?:https?|file|ftp):\/\/.*.\.(?:com|ca|net|museum|org|co\.uk))
如果合适,可以随意添加更多protocals,如果合适,可以添加更多图片扩展,如果合适,还可以添加更多顶级域名。
在regex101上测试过