图片的正则表达式匹配网址

Posted

技术标签:

【中文标题】图片的正则表达式匹配网址【英文标题】:Regex match url of image 【发布时间】:2021-03-14 01:42:28 【问题描述】:

我想匹配以“//”开头并以“.jpg”或“.png”或“gif”结尾的图片网址。 所以我做了以下正则表达式,它可以工作,但不是所有情况..

var pattern = /\/2.+?\.(jpg|png|gif)/gm;

问题是, 它也匹配看起来像这样的东西,

//pm.pstatic.net/dist/css/nmain.20201119.css"> @SamridhTuladhar 感谢您的来信。我刚试过,但它不工作。它从“//”匹配到“.”

【参考方案1】:

你可以试试这个正则表达式:

/\/\/(\S+?(?:jpe?g|png|gif))/ig

RegEx Demo

正则表达式详细信息:

\/\/:匹配// (: 启动捕获组 #1 \S+?:匹配 1+ 个非空格(惰性) (?:jpe?g|png|gif):匹配 jpgjpegpnggif ): 结束捕获组

【讨论】:

【参考方案2】:

你可以试试下面的正则表达式:

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

另外,您可以在这里测试您的正则表达式:

https://regex101.com/r/l2Zt7S/1

只是为了好玩,这里有一个匹配所有类型图片网址的正则表达式:

^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+(?:png|jpg|jpeg|gif|svg)+$

让我感兴趣的是如何选择最后一次出现的“//”。但是让我们看看是否有人想出了解决这个问题的方法。

这是我使用您共享的 URL 测试 Regex 时得到的匹配结果。

【讨论】:

谢谢aryashah2k!但是我要抓取的网站的图像地址类似于“背景:url(//gd4.alicdn.com/imgextra/i4/2748816012/O1CN01gbXzeB1uHXhQ9eTVd_!!2748816012.jpg_30x30.jpg)”它没有“http: “在乞求中。我尝试了您的代码,如果图像 url 有“http:”,它可以完美运行,但是当我删除“http:”部分时它不起作用。

以上是关于图片的正则表达式匹配网址的主要内容,如果未能解决你的问题,请参考以下文章

匹配一个网址URL的js正则表达式怎么写啊?

用正则表达式提取网址中的IP怎样取?

PHP正则表达式匹配所有网址[重复]

Python 使用正则表达式匹配URL网址

正则表达式匹配网址

Oracle正则表达式之匹配网址