1

可能对于一些专家来说这将是一个非常简单的问题,但对我来说似乎很难。我想使用variable正则表达式的 in 模式。

$("#srcbtn .btnPage").live("click",function(){
     var filter = $(this).val(), count = 0;

     $(".checkpoint").each(function () {
         if ($(this).find(".chpdetails .chkpname").text().search(new RegExp(/\b filter /i)) < 0) {
               $(this).hide();
         } else {
               $(this).show();
               count++;
         }
    });
});

if但过滤器变量在条件下不起作用。此代码的目的是搜索以filter变量值开头的单词,即 A、B 等。我该怎么做?

提前致谢。

4

2 回答 2

4

用这个 :

new RegExp("\\b" + filter, 'i')

请参阅RegExp 的文档

如果您有许多检查点,您可能应该在进入循环之前构建正则表达式对象,而不是在每次迭代时构建它:

 var r = new RegExp("\\b" + filter, 'i');
 $(".checkpoint").each(function () {
     if ($(this).find(".chpdetails .chkpname").text().search(r) < 0) {
           $(this).hide();
     } else {
           $(this).show();
           count++;
     }
});
于 2013-01-23T18:52:18.493 回答
1

使用构造函数允许RegExp

$("#srcbtn .btnPage").live("click",function(){
     var filter = $(this).val(), count = 0;

     $(".checkpoint").each(function () {
         if ($(this).find(".chpdetails .chkpname").text().search(new RegExp("\\b" + filter, "i")) < 0) {
               $(this).hide();
         } else {
               $(this).show();
               count++;
         }
    });
});
于 2013-01-23T18:57:53.807 回答