用户输入RegExp不区分大小写

时间:2014-06-09 20:14:20

标签: javascript jquery

我试图在单个页面上的表格上进行不区分大小写的搜索,使用用户输入键,隐藏不与contains匹配的表格行,并突出显示的文本比赛。隐藏/显示工作正常但匹配文本的突出显示无法使用RegExp和' i'。

chrome检查器中的

错误:"从另一个构建一个RegExp时无法提供标记"

我搜索了这个并且几乎找不到任何东西。

如果我只使用testcase变量并输入正确的capilisation,则突出显示有效。

任何建议都表示赞赏,我需要在英格兰赢得世界杯之前解决这个问题(..我可能会获得同样多的机会。):-D

$('input[name="search"]').live('keyup',function(){

var searchterm = $(this).val();

if(searchterm.length > 2) {

///make contains: non case sensitive
jQuery.expr[":"].contains = jQuery.expr.createPseudo(function(arg) {
return function( elem ) {
    return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});


$('tr.data-row:contains("' + searchterm + '")').show();
$('tr.data-row:not(:contains("' + searchterm + '"))').hide();
$(".heading").hide();


$('.data-row p').each(function() {

var textcase = $(this).text();

var term = searchterm;
var text = new RegExp(/textcase/,"i");


$(this).html(text.replace(term,'<span style="color:#000;padding:3px; background-color:#afbbd7"><b>'+searchterm+'</b></span>'));
});

} 

});

1 个答案:

答案 0 :(得分:6)

正则表达式

好的

  
      
  1. new RegExp('chicken', 'gm')
  2.   
  3. new RegExp(/chicken/gm)
  4.   

BAD

  
      
  1. new RegExp('/chicken/', 'gm')
  2.   
  3. new RegExp(/chicken/, 'gm')
  4.   

当传入一个字符串作为正则表达式时,&#39; gm&#39; part必须是一个字符串,并作为第二个参数传入。

当传入/.../作为正则表达式时,&#39; gm&#39;部分需要在结束后立即进入/.