我正在尝试匹配以jpg或png或gif结尾的每个src属性并在其中提取src字符串。我不确定我提出的以下正则表达式是否正确,但它确实给了我带地址的src属性。我的问题与以下正则表达式的可能问题以及如何只提取src字符串有关。
/src\s*=\s*(["'][^"']+(jpg|png|gif)\b)/g;
答案 0 :(得分:1)
首先,你的正则表达式试图做太多。首先做类似的事情:
function img_find() {
var imgs = document.getElementsByTagName("img");
var imgSrcs = [];
for (var i = 0; i < imgs.length; i++) {
imgSrcs.push(imgs[i].src);
}
return imgSrcs;
}
现在,你的正则表达式要处理的要少得多。 (没有空格,单引号和双引号,等等。)
请阅读this,不要(除了非常简单的情况)尝试使用正则表达式来解析原始HTML:)
因此,给定一系列图像来源,您只需选择jpg
/ png
/ gif
个:
/(jpg|png|gif)$)/i;
然后获取他们的文件名,没有扩展名:(有很多方法可以做到这一点;这只是我扔在一起的一件事......)
/(.*)\.[^.]+)/;