Javascript Regexp搜索某些类

时间:2013-04-09 12:24:49

标签: javascript regex

我有一个简单的Regexp,代码如下:

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

这个正则表达式允许我获取我的文档的每个img的src。 我试图做的没有任何成功,就是为它添加一个类条件,这将找到我的图像中具有某个类的所有src。 我尝试过类似的东西:

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

但这只有在src之后插入类时才有效,而且我需要正则表达式以反向工作。

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

已经有人说你不应该使用正则表达式blablabla ...
不过,如果我让你在同一时间学习正则表达式的话,我可以处理我的良心,所以,让我们这样做。这里的关键工具是lookahead

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分: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次或多次