0

我想匹配所有 URL,但从与该正则表达式匹配的蜜蜂中排除图像 URL: jpe?g|gif|png 。

\b(?:https?|ftp|file)://[-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  
4

2 回答 2

3

Just start your regex with (?!.*(?:\.jpe?g|\.gif|\.png)$),

so if your current regex is \b(?:https?|ftp|file)://..., then merge it to

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

Read also PHP URL validation

于 2012-06-25T22:09:48.413 回答
0

我正在为最近关闭的一个重复问题解决这个问题,所以我会在这里发布:

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

如果合适,可以随意添加更多协议,如果合适,可以添加更多图像扩展,如果合适,可以添加更多顶级域。

在 regex101 上测试

于 2014-06-12T18:45:30.370 回答