2013-08-01 27 views
0

我需要创建一个正则表达式函数,它将过滤包含选定字符串的文章提要列表。为过滤器创建javascript正则表达式函数

下面的代码在用户单击过滤器选项时将变量'tf'添加到所选字符串中。变量'tf'可能是这样的:“香草冰淇淋,视频游戏”,“香草冰淇淋”和“视频游戏”是关键词。

$(".trending").click(function(){ 
    $(this).toggleClass("selected"); 

    var temp22 = ""; 
    $(".trending.selected").each(function(i, e) { 
     temp22 += $(this).attr("id").substr(9) + ", "; 
    }); 

    tf = temp22; 
    filter_trend(); 
}); 

下面的代码段通过搜索文章列表来查看文章列表是否包含关键字。 $(f2)是文章的列表,我通过返回仅包含其html中的关键字的文章进行过滤。

function filter_trend(){ 
    var tfilter = new RegExp (tf, "i"); 

    if (tf == ""){ 
     filter_load(); 
     return; 
    } 

    if (f == "") 
     var f2 = ".article"; 
    else 
     var f2 = f; 

    $(f2).hide(); 
    //alert(f2); 
    $(f2).filter(function(i,e) { 
     return i < list_length && tfilter.test($(e).html()); 
    }).show(); 

} 

有没有办法使用正则表达式,或者我应该用另一种方法?

+0

为什么在使用'.indexOf'时使用正则表达式? http://jsfiddle.net/d2M5n/ –

+0

另外,当你可以将'tf'作为函数参数传递给'filter_trend()'时,依靠全局变量传递信息并不是一个好习惯。 – nnnnnn

回答

0

好吧,所以我不知道正则表达式中的'或'运算符。

添加'|'在每个关键字之间解决问题。