我试图在单个页面上的表格上进行不区分大小写的搜索,使用用户输入键,隐藏不与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>'));
});
}
});
答案 0 :(得分:6)
正则表达式
好的
new RegExp('chicken', 'gm')
- 醇>
new RegExp(/chicken/gm)
BAD
new RegExp('/chicken/', 'gm')
- 醇>
new RegExp(/chicken/, 'gm')
当传入一个字符串作为正则表达式时,&#39; gm&#39; part必须是一个字符串,并作为第二个参数传入。
当传入/.../作为正则表达式时,&#39; gm&#39;部分需要在结束后立即进入/.