图片的正则表达式匹配网址
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)
:匹配 jpg
、jpeg
、png
或 gif
)
: 结束捕获组
【讨论】:
【参考方案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:”部分时它不起作用。以上是关于图片的正则表达式匹配网址的主要内容,如果未能解决你的问题,请参考以下文章