图像URL的正则表达式

Adr*_*son 5 c# regex

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

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

我想这写起来很简单,但我不是一个很棒的正则表达式.我想这些部件看起来像这样

  1. ^((HTTPS \:\ /\/)|(\/{1,2}))
  2. (有任何想法吗?)
  3. ((JPE G |?PNG | GIF))$

任何人都可以帮助我填补空白吗?

谢谢

回答

(https?:)?//?[^\'"<>]+?\.(jpg|jpeg|gif|png)
Run Code Online (Sandbox Code Playgroud)

eri*_*sco 7

有许多用于匹配URL的临时正则表达式,但我所知道的没有一个声称完全可靠.但是,这个将尝试满足您的条件.

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

因此,您可能只是假设任何内容都可以在URL中,但只是它必须以特定内容开头并以特定内容(您提供的内容)结束,但这仍然是不可靠的.

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