使用正则表达式获取HTML/Js中的图像URL

anh*_*ran 10 html regex

我想用Js/HTML获取一些图像的URL:

var a = "http://sub.domain.com/uploads/files/11-11-2011/345301-574-1182-393/2202.jpg";
var b = "http://sub.domain.com/uploads/files/23-11-2011/234552-574-2321-232/asd.png";
Run Code Online (Sandbox Code Playgroud)

寻找将检测图像网址的解决方案.所以输出将是:

http://sub.domain.com/uploads/files/11-11-2011/345301-574-1182-393/2202.jpg
http://sub.domain.com/uploads/files/23-11-2011/234552-574-2321-232/asd.png
Run Code Online (Sandbox Code Playgroud)

谢谢!

tin*_*fni 30

根据您提供的信息,这应该工作:

(https?:\/\/.*\.(?:png|jpg))
Run Code Online (Sandbox Code Playgroud)

您可以通过添加|ext后添加更多扩展jpg.这也将允许字符串https.

注意:您可能希望使用不区分大小写的修饰符i来使捕获更具包容性.这看起来像:

/(https?:\/\/.*\.(?:png|jpg))/i
Run Code Online (Sandbox Code Playgroud)

  • 在src ="https://mail.google.com/mail/u/0/images/cleardot.gif"style ="background:url(https://ssl.gstatic.com/mail/)等情况下,此操作会失败sprites/general-51d583f1fd064eadd1975a8bdef3ef93.png).对我有用的是(https?:\ /\/ [^]*\.(?:gif | png | jpg | jpeg)) (6认同)
  • 我认为这更好:`(http)?s?:?(\ /\/ [^"']*\.(?:png | jpg | jpeg | gif | png | svg)) (6认同)

Nat*_*ppi 10

派对有点晚了,但是在尝试做类似OP的事情时,我创建了以下正则表达式,它似乎处理相对链接以及绝对链接:

/([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i
Run Code Online (Sandbox Code Playgroud)


小智 5

我几天前创建了这个正则表达式:

/^https?:\/\/.*\/.*\.(png|gif|webp|jpeg|jpg)\??.*$/gmi
Run Code Online (Sandbox Code Playgroud)

其他人在这篇文章中提供的方法可以工作,但不会检查查询字符串

此正则表达式的示例:

/^https?:\/\/.*\/.*\.(png|gif|webp|jpeg|jpg)\??.*$/gmi
Run Code Online (Sandbox Code Playgroud)

  • 恐怕您的代码无法按您的预期工作。例如,它也会匹配“https://foo.bar/a.jpg.pdf”之类的内容,或者实际上指定扩展名后面的任何字符都会匹配。我不是正则表达式专家,但也许这样的东西可以: `^https?:\/\/.*\/.*\.(png|gif|webp|jpeg|jpg)($|\?.* $)`。您可能还想考虑添加 uri 片段“#”作为条件。 (2认同)