当前位置:  开发笔记 > 编程语言 > 正文

正则表达式检查有效的URL是否以.jpg,.png或.gif结尾

如何解决《正则表达式检查有效的URL是否以.jpg,.png或.gif结尾》经验,为你挑选了4个好方法。

我希望用户提交一个有效的网址,但也是一个图片,以.jpg,.png或.gif结尾.



1> Dan..:
(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*\.(?:jpg|gif|png))(?:\?([^#]*))?(?:#(.*))?

这是来自RFC 2396的官方URI解析regexp的(略微修改的)版本.它允许#fragments?querystrings出现在文件名之后,这可能是您想要的,也可能不是.它还匹配任何有效的域,包括localhost,它可能不是你想要的,但它可以被修改.

对此更传统的正则表达式可能如下所示.

^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:jpg|gif|png)$
          |-------- domain -----------|--- path ---|-- extension ---|

编辑请参阅我的其他评论,尽管这个评论并没有像这个完全回答,我觉得在这种情况下它可能更有用.但是,我要离开这里了卡玛 - 嫖娼 完整性的原因.


将"jpg"替换为"jpe?g",并在正则表达式上设置不区分大小写的标志.

2> Dan..:

其实.

你为什么要查看网址?这并不能保证你得到的是一张图片,也不能保证你拒绝的东西不是图像.尝试对其执行HEAD请求,并查看它实际上是什么内容类型.


根据您对URL背后的数据的偏执程度,您可能希望超越HEAD并获取(声称的)图像的完整内容,然后使用图像处理库来验证它是否是它声称的内容是.

3> Blair Conrad..:

通常,最好使用内置库或框架函数验证URL,而不是滚动自己的正则表达式来执行此操作 - 请参阅检查字符串是否为有效URL的最佳正则表达式.

但是,如果您热衷于这样做,请查看以下问题:

获取URL的一部分(正则表达式)

然后,一旦你对URL(通过你用来验证它的任何方式)感到满意,你可以使用一个简单的"endswith"类型字符串运算符来检查扩展,或者像一个简单的正则表达式

(?i)\.(jpg|png|gif)$



4> FDisk..:
(http(s?):)|([/|.|\w|\s])*\.(?:jpg|gif|png)

这将填充此字符串中的所有图像:

background: rgb(255, 0, 0) url(../res/img/temp/634043/original/cc3d8715eed0c.jpg) repeat fixed left top; cursor: auto;
background-image: url(../res/img/temp/634043/original/cc3d8715eed0c.png); background: rgb(255, 0, 0) url(http://google.com/res/../img/temp/634043/original/cc3 _d8715eed0c.jpg) repeat fixed left top; cursor: auto; background: rgb(255, 0, 0) url(https://google.com/res/../img/temp/634043/original/cc3_d8715eed0c.jpg) repeat fixed left top; cursor: auto;

在这里测试你的正则表达式:https://regex101.com/r/l2Zt7S/1

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有