图像url的正则表达式

本文关键字:正则表达式 url 图像 | 更新日期: 2023-09-27 17:57:52

我已经在使用HtmlAgilityPack解析页面,并获得大多数img源代码。然而,许多网站在img src属性以外的地方包含img url(例如,内联javascript、不同的属性、不同的元素)。我想撒一个稍微宽一点的网,并在整个html字符串上运行regex,在regex中捕获以下内容。

  1. 必须以http://、https://、//或开头/
  2. 然后,任意数量的有效url路径字符
  3. 必须以.jpeg、.jpg、.png或.gif结尾

我想这写起来很简单,但我不是一个很棒的正则表达式生成器。我想零件会像这个

  1. ^((https?'':''/''/)|(''/{1,2}))
  2. (有什么想法吗?)
  3. (.(jpe?g|png|gif))$

有人能帮我填空吗?

感谢

回答

(https?:)?//?[^''"<>]+?'.(jpg|jpeg|gif|png)

图像url的正则表达式

有很多用于匹配URL的特殊正则表达式,但据我所知,没有一个声称完全可靠。然而,这将试图满足你的条件。

根据[1],有效的URL字符(不保留)是字母数字和符号$-_.+!*'(),。然而,也有保留字符,它们是+/?%#&,由[2]简明地给出——我在RFC的大部分中找不到列表。我知道还有其他字符用于查询字符串,即=;,所以这些字符需要包含在内。然后你会遇到这样的问题,不是每个人都能正确地编码他们的URL字符,所以在其他事情中可能会出现空格(我不知道如何解释,因为浏览器如何自动更正可能会令人困惑)。

因此,你可能只是假设任何东西都可以在URL中,但它必须以特定的东西开始,以特定的(你提供的)东西结束,但这仍然是不可靠的。

@(https?:)?//?[^'"<>]+?'.(jpg|jpeg|gif|png)@

(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*'.(?:jpg|gif|png))(?:'?([^#]*))?(?:#(.*))?