【问题标题】: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 感谢您的来信。我刚试过,但它不工作。它从“//”匹配到“.”

标签: javascript regex url


【解决方案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:”部分时它不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2013-01-29
    • 2015-05-25
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多