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

使用正则表达式获取HTML/Js中的图像URL,html,regex,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"; 正在寻找将检测图像url的解决方案。因此,输出将是: http://sub.domain.com/uplo

我想获得一些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";
正在寻找将检测图像url的解决方案。因此,输出将是:

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
谢谢

试试这个:

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

1美元是您想要的。

根据您提供的信息,这应该可以:

(https?:\/\/.*\.(?:png|jpg))
您可以通过在
jpg
之后添加
| ext
来添加更多扩展。这将允许使用
https
的字符串

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

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

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

/([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i
var regex=/(http[s]?:\/\/.*。(?:png | jpg | gif | svg | jpeg))/i;

这是您想要的结果

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

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

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

/^https?:\/\/.*\/.*\.(png|gif|webp|jpeg|jpg)\??.*$/gmi
其他人在本文中提供的查询可以工作,但不会检查查询字符串

此正则表达式的示例:

静态checkForImage(url){
让正则表达式=/^https?:\/\/.*/.*。(png | gif | webp | jpeg | jpg)\??.$/gmi
让结果;
if(url.match(regex)){
结果={
匹配:url.match(regex)
}
}否则{
结果=假;
}
返回结果;
}
checkForImage('https://images-ext-2.discordapp.net/external/yhycJKw8ohsysnU6CBDLQPV4979oQINVmv-fRfu-jL8/%3Fsize%3D2048/https/cdn.discordapp.com/avatars/490535372393021469/a_9e9d0e575eee0221e759257e259681af.gif')

只是想澄清一下:您想在JavaScript部分中扫描整个包含JavaScript的HTML源文件中的URL字符串吗?这在src=”“style=“background:URL().这样的情况下会失败。对我有效的是(https?:\/\/[^]*。(?:gif;png;jpg;jpeg))我认为这样更好:
(http?:?(\/\/\/\/[^']*\。(?:png | jpg | jpeg | gif | png | svg))
yeah+1:例如:someurl.svg.png(wiki等)although@Amarsh是对的,OP要求URL,不是一个通用路径,而是URL(我认为必须有scheme(例如http:),如果你已经有
/src\W*=[^\'”]*([\')(^\1]*)\1/
-
之后的意思是“不贪婪”,
\W
表示非单词字符,并且
\1
正在引用第一个定义的组。不要使用
+
而不是
*
仅获取非空-如果
具有更多属性,则可能不起作用!如果URL与其他文本混合,则只允许提取URL(在刮取时非常有用)这不会完全提取内部有空格的文件名为什么
(http[s]*:/)
?除了s之外,还有什么可以附加到http上的吗?哦,这是因为如果您通过https访问不支持的服务时,有些服务会出现错误行为,反之亦然。我遇到过这样的情况,更改协议解决了我的问题。在任何情况下,这也是为了给其他答案提供不同的方法。我知道,确实如此me服务只有http,其他服务可能只有https。哦,我明白了,您只需使用
*
而不是
,这会更加有意。恐怕您的代码不会像您预期的那样工作。例如,它会匹配
https://foo.bar/a.jpg.pdf
以及指定后的任何字符D扩展将是匹配的。我不是正则表达式Gru,但也许类似的事情会这样做:<代码> htthttp::\/\/**/*.pnggif(WebP)jpeg(jpg)($$*.$) >。