修改代码以包装整个单词&使其不区分大小写

时间:2015-09-01 11:46:17

标签: javascript jquery

function filterSearchWords() {
    var query = $("#searchquery").val();

    go(query);
    function go(query) {
        $(".search-result p:contains(" + query + ")").html(function (_, html) {
            return html.replace(query, "<span class='search-enlight'>$&</span>", 'gi');
        });
        $(".search-result h2 a:contains(" + query + ")").html(function (_, html) {
            return html.replace(query, "<span class='search-enlight'>$&</span>", 'gi');
        });
        console.log(query);
    }
}

这是我的尝试。它增加了范围,但仅限于包含字符串的单词或部分单词。让我们说字符串是Pie,它在所有“Pie”中添加了span,并在Piechart中包装了“Pie”,但是我希望它包装所有的Piechart,并且没有大写的馅饼。

任何人都可以修改我的代码来帮助我吗?

由于

我尝试使用正则表达式“gi”似乎不起作用:/

UPDATE 差不多......

function filterSearchWords() {
    var query = $("#searchquery").val();

    go(query);
    function go(query) {
        $.extend($.expr[':'], {
            'containsi': function (elem, i, match, array) {
                return (elem.textContent || elem.innerText || '').toLowerCase()
                .indexOf((match[3] || "").toLowerCase()) >= 0;
            }
        });

        $(".search-result p:containsi(" + query + ")").html(function (_, html) {
            return html.replace(new RegExp(query,  "gi"), "<span class='search-enlight'>$&</span>");
        });
        $(".search-result h2 a:containsi(" + query + ")").html(function (_, html) {
            return html.replace(new RegExp(query, "gi"), "<span class='search-enlight'>$&</span>");
        });
        console.log(query);
    }
}

这是我的最后一个问题。我成功删除了casesensitive部分,但它与整个单词不匹配。

1 个答案:

答案 0 :(得分:1)

关于MDN的第三个标志参数的说明:

  

注意:flags参数在v8 Core(Chrome和Node.js)

中不起作用

您应该使用RegExp对象:

int i=237341992;
double d=(double)i;