Javascript 在背景图像中使用正则表达式获取div

Javascript 在背景图像中使用正则表达式获取div,javascript,jquery,regex,background-image,Javascript,Jquery,Regex,Background Image,我正试图用纯js或jQuery编写一个脚本,以捕获每个在CSS背景图像属性中带有特定正则表达式的 <div style="background-image: url('the_regex/http://example.org/image.jpg')> <div style="background-image: url('the_regex/http://example.org/another.jpg')> 用这个 this.$imgs = $("img[src*='

我正试图用纯js或jQuery编写一个脚本,以捕获每个在CSS
背景图像
属性中带有特定正则表达式的

<div style="background-image: url('the_regex/http://example.org/image.jpg')>
<div style="background-image: url('the_regex/http://example.org/another.jpg')>
用这个

  this.$imgs = $("img[src*='" + this.the_regex + "']");

因此,这适用于
,您可以将regex和
.filter()
函数结合起来以实现所需的功能。基本上,我们运行使用
.css()
方法检索的
背景图像
属性,并检查它们是否与模式匹配。如果有,我们将返回元素列表(您可以稍后操作):

在下面的示例中,我希望背景图像与模式
/http:\/\/placehold\.it/gi
(即匹配
http://placehold.it
,作为全局和不区分大小写的匹配),如果他们这样做了,我将它们向上滑动。当然,您应该在这里使用自己的模式并链接其他下游jQuery方法,我将其用作概念证明:)

它既适用于通过CSS指定的背景图像,也适用于通过内联样式属性指定的背景图像

请参见此处的演示:


OP询问是否可以在filter函数之外单独定义regexp。是的,有可能:

var pattern = new RegExp("http:\/\/placehold\.it", "gi");

$('div').filter(function() {
    return $(this).css('background-image').match(pattern);
}).slideUp();

请参阅此处更新的演示:

我不知道html,但什么是背景图像属性,这是div标记的属性吗?谢谢-我在尝试定义和替换匹配字符串的变量时遇到问题。似乎它需要一个新的RegExp构造函数来将一个变量与“/g”放在一起——比如
var theRegex=“1600x50”
然后
匹配(新的RegExp(theRegex,\/g))?然而,事实并非如此working@nimmolo,您将需要执行
newregexp(theRegex,“g”)
。但我建议将该逻辑置于
.filter()
函数之外,否则将浪费多次重新创建同一表达式的效率。因此
theRegex=newregexp(theRegex,“g”)
,然后在可调用函数
.match(theRegex)
@nimmolo中,我更新了答案,以包括您想要预先定义模式的场景。也更新了演示:@Sam@Terry谢谢。因为我想去掉正则表达式if(条件满足),我已经更新了jsfiddle,从
点击
上的
背景图像中删除了模式。它不起作用,但我得到的是用变量
divs
中的模式收集div,然后用空字符串替换
每个
上的字符串
这个
在该上下文中只是一个HTML元素,您需要将其转换为jQuery元素才能使用
.css()
()。根据表达式替换的内容,您可以将
背景图像
属性设置为
()。
$('div').filter(function() {
    return $(this).css('background-image').match(/http:\/\/placehold\.it/gi);
}).slideUp();
var pattern = new RegExp("http:\/\/placehold\.it", "gi");

$('div').filter(function() {
    return $(this).css('background-image').match(pattern);
}).slideUp();