jQuery正则表达式问题 - 简单匹配

时间:2010-08-13 20:58:34

标签: jquery regex

如何使用设置的jquery匹配内容:

  • id =“intersection_resources_4_5”//点击
  • id =“intersection_content_6_5”//点击
  • id =“intersection_content_4_3”//不是

我想做类似的事情:

$("div:regex(id, intersection_*_*_5)").each(function(){
    $(this).click();
});

这可行吗?假设*是一个通配符,我似乎无法开始工作。

4 个答案:

答案 0 :(得分:2)

使用过滤器和正确的正则表达式,这应该可行

$("div:regex(id, ^intersection_\d_\d_5$)").each(function(){
    $(this).click();
});

编辑:

尝试使用此正则表达式^intersection_[\w-[0-9]]+_\d+_\d+$

如果你知道它是什么,你可以使用特定的单词/数字替换两个下划线之间的部分。

答案 1 :(得分:2)

如果您不想要插件,并且您不想创建自己的选择器过滤器,请执行以下操作:

$("div[id^=intersection]").filter(function() {
    var header = this.id.substr(13); 
    var regex = new RegExp('_[a-zA-Z]+_\\d+_' + header + '$');
    return regex.test(this.id);
}).click();

最好是您的<div>元素有一个类以提高性能。

类似的东西:

$("div.intersection[id^=intersection]")...

答案 2 :(得分:0)

jQuery有正则表达式选择器:

http://james.padolsey.com/javascript/regex-selector-for-jquery/

就像这样使用:

$( ':正则表达式(ID,^ [AEIOU])');

答案 3 :(得分:0)

使用filter方法和自定义功能。像这样:

var r = new RegExp("intersection_\d+_\d+_"+num);
$("div").filter(function(){
  return $(this).attr("id").match(r);
}).click();