0

我有一个包含许多元素(表、div 等)的 html 页面,我将它们作为字符串获取,我想<img src="(whatever char).jpg" (whatever char)>从字符串中提取这种格式,我尝试了正则表达式教程,但无法做任何事情,因为它对我来说很复杂。我只需要第一次出现,谢谢。

4

3 回答 3

2

我不认为正则表达式是解决这个问题的正确方法:

var all_images = document.getElementsByTagName('img');
var filtered_images = [];

for (var i = 0; i < all_images.length; i++) {
    var image = all_images[i];

    if (image.hasAttribute('src')) {
        filtered_images.push(image);
    }
}

如果您使用的是jQuery,代码会简单得多:

var images = $('img[src]');
于 2012-09-28T08:04:34.627 回答
2

这是你的需要吗?

"<img src=\"aaa.jpg\" (whatever char)>".match(/src="([^"]*)"/)[1]

同意 Blender,改用 dom,正则表达式不是一个好的解决方案。

于 2012-09-28T08:09:22.300 回答
0

强制链接到为什么你应该三思而后行关于使用正则表达式解析 HTML 的答案: RegEx match open tags except XHTML self-contained tags

话虽如此,我想知道为什么您将网站 HTML 代码作为字符串而不是 DOM 树,并且需要在 javascript 中对其进行操作。这看起来是一个非常罕见的用例。当您的脚本在您要解析的网站上运行时,您可以使用 document.getElementsByTagName("img") 来获取网站上所有图像 DOM 节点的数组。但是当你真的有另一个网站的源代码作为一个字符串并且想要解析它时,试试这个正则表达式。

<img.*?src="(.*?)"
于 2012-09-28T08:10:05.430 回答