我有一个简单的Regexp,代码如下:
<img[^>]+src="([^">]+)"
这个正则表达式允许我获取我的文档的每个img的src。 我试图做的没有任何成功,就是为它添加一个类条件,这将找到我的图像中具有某个类的所有src。 我尝试过类似的东西:
<img[^>]+src="([^">]+)" *class="name_of_my_class"
但这只有在src之后插入类时才有效,而且我需要正则表达式以反向工作。
感谢您的帮助!
答案 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次或多次