0

我有一个简单的正则表达式,代码如下:

<img[^>]+src="([^">]+)"

这个正则表达式允许我获取文档中每个 img 的 src。我试图做的没有任何成功,是向它添加一个类条件,这将找到我的图像的所有具有特定类的 src。我尝试过这样的事情:

<img[^>]+src="([^">]+)" *class="name_of_my_class"

但这仅在将类插入到 src 之后才有效,并且我需要正则表达式以反向方式工作。

感谢您的帮助!

4

4 回答 4

2

已经说过你不应该使用正则表达式blablabla......
不过,如果我让你同时学习一些关于正则表达式的东西,我可以处理我的良心,所以,让我们这样做。这里的关键工具是前瞻

/<img(?=[^>]+class="name_of_my_class")[^>]+src="([^">]+)"/

前瞻允许您在不移动字符串内的指针的情况下检查某些内容。所以基本上,你先检查一下。

于 2013-04-09T12:33:59.323 回答
1

如果您需要遍历文档、搜索类和返回属性,您可能会发现使用 DOM 查询工具更容易:

var imgSrcArray = [].slice.call(document.querySelectorAll('img.myClassName'),0)
                       .map(function(img) {
                          return img.getAttribute('src');
                       });

(示例假设启用了 querySelector 和 Array.prototype.map 的现代浏览器)

于 2013-04-09T12:31:46.237 回答
0

考虑到这两种情况可能是一个解决方案,在 src 属性之前或之后进行分类:

<img[^>]+?((src="([^">]+)"[^>]*?class="name_of_my_class")|(class="name_of_my_class"[^>]*?src="([^">]+)"))[^>]*>
于 2013-04-09T12:36:27.847 回答
0

嗯,我真的不知道如何在正则表达式中做到这一点,但我认为你可以按照以下方式做到这一点:

<img 
    {any charakter except >}* 
    (
        {check for class} {any charakter except >}* {get src} 
        ||
        {get src} {any charakter except >}* {check for class}
    )
    {any charakter except >}*
>

*表示0次或多次

于 2013-04-09T12:41:40.920 回答