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

时间:2010-11-04 15:44:00

标签: 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";

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

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

谢谢!

6 个答案:

答案 0 :(得分:27)

根据您提供的信息,这应该有效:

(https?:\/\/.*\.(?:png|jpg))

您可以在|ext之后添加jpg来添加更多扩展程序。这将允许包含https的字符串。

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

/(https?:\/\/.*\.(?:png|jpg))/i

答案 1 :(得分:9)

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

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

答案 2 :(得分:3)

试试这个:

/"(http://[^"]*?\.(jpg|png))"/g

$ 1就是你想要的。

答案 3 :(得分:0)

对此的超严格解决方案是:

/(http[s]*:\/\/)([a-z\-_0-9\/.]+)\.([a-z.]{2,3})\/([a-z0-9\-_\/._~:?#\[\]@!$&'()*+,;=%]*)([a-z0-9]+\.)(jpg|jpeg|png)/i

答案 4 :(得分:0)

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

/^https?:\/\/.*\/.*\.(png|gif|webp|jpeg|jpg)\??.*$/gmi

本文中其他人提供的有效,但不会检查查询字符串

这个正则表达式的例子:

  static checkForImage(url){
    let regex = /^https?:\/\/.*\/.*\.(png|gif|webp|jpeg|jpg)\??.*$/gmi
    let result;
    if (url.match(regex)){
      result = {
        match: url.match(regex)
      }
    } else {
      result = false;
    }
    return result;
  }
checkForImage('https://images-ext-2.discordapp.net/external/yhycJKw8ohsysnU6CBDLQPV4979oQINVmv-fRfu-jL8/%3Fsize%3D2048/https/cdn.discordapp.com/avatars/490535372393021469/a_9e9d0e575eee0221e759257e259681af.gif')

答案 5 :(得分:-1)

var regex = /(http [s]?://。*。(?:png | jpg | gif | svg | jpeg))/ i;

这是你想要的结果