突出显示所有出现的字符串 - 不区分大小写

时间:2013-09-27 17:31:27

标签: javascript jquery string replace

在此page我想在文本中搜索一个单词并突出显示所有出现的内容。例如,如果我寻找"前端"比我想要的所有出现的"前端"突出显示。使用下面的代码我会突出显示它们,但是也会替换出现的大写字符。你能解决这个问题吗?这是我的代码:

这使得jQuery包含不区分大小写的

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});

这是通过替换

突出显示的代码
$('input[value="Zoeken"]').click(function(){
    $('.section').html(function (i, str) {
        yellowspan = new RegExp('<span style="background-color: #FFFF00">' ,"g"); 
        empty = "";
        return str.replace(yellowspan, empty);
    });

    $('.section').html(function (i, str) {
        endspan = new RegExp("</span>" ,"g"); 
        empty = "";
        return str.replace(endspan, empty);
    });

    var string = $('input[placeholder="Zoeken"]').val();                    
    $('.section:contains("' + string + '")').each(function(index, value){
        $(this).html(function (i, str) {
            simpletext = new RegExp(string,"gi"); 
            yellowtext = "<span style='background-color: #FFFF00'>" + string + "</span>";
            return str.replace(simpletext, yellowtext);
        });
    });
});

有问题的代码在最后一个html()函数

1 个答案:

答案 0 :(得分:5)

替换

simpletext = new RegExp(string,"gi"); 
yellowtext = "<span style='background-color: #FFFF00'>" + string + "</span>";
return str.replace(simpletext, yellowtext);

simpletext = new RegExp("(" + string + ")","gi"); 
return str.replace(simpletext, "<span style='background-color: #FFFF00'>$1</span>")

new Regexp()中的额外parens捕获找到的值。 str.replace中的$ 1会插入捕获的值