2

我的网站上有一个脚本,它突出显示包含通过输入文本字段搜索的单词的 div。每当我搜索以 æ、ø 和 å (丹麦字符)开头的单词时,它都会失败,但如果它们位于单词的其他任何地方,则不会。

我做了一个jsfiddle:

http://jsfiddle.net/8Y3cM/

rx = new RegExp("\\b(" + quest.join("|") + ")", "gi")

如果您搜索 hello,您会看到它突出显示了前 2 个 div,因为它们都包含 hello。但是,如果您搜索“ælle”,它不会突出显示包含的 div。

希望有人对此有解决方案-提前谢谢您!(:

4

3 回答 3

0

采用:

rx = new RegExp("(^\|[ \n\r\t.,'\"\+!?-]+)(" + quest.join("|") + ")([ \n\r\t.,'\"\+!?-]+\|$)", "gi"),

小提琴:http: //jsfiddle.net/8Y3cM/15/

感谢来源

于 2013-03-01T11:32:00.933 回答
0

这不是正则表达式,这是您处理行的方式。这有效:

$("#search-question-button").click(function () {
    var quest = $('#search-questions-field').val().trim().split(" "),
    rx = new RegExp('\\b(' + quest.join("|") + ')', "gi");
    $(".searchin").removeClass('search-successful').addClass(function() {
        return $(this).text().match(rx) ? 'search-successful' : '';
    });
});

我用match而不是replace.

http://jsfiddle.net/dfsq/8Y3cM/21/

于 2013-03-01T11:45:05.000 回答
0

抛开有趣的 RegEx 问题不谈,你为什么还需要 RegEx 呢?我认为一个简单的.indexOf就可以了

$(document).ready(function(){
    $("#search-question-button").click(function () {
        var quest = $('#search-questions-field').val().trim().split(" ").map(function(q){return q.toLowerCase();});

        $(".searchin").each(function() {            
            elm = $(this);
            elm.removeClass('search-successful');
            found = 0;
            var t = elm.text().toLowerCase();
            quest.forEach(function(q){
                if (t.indexOf(q) >= 0) found++;
            });
            if (found===quest.length) elm.addClass("search-successful");
        });      
    });
});
于 2013-03-01T11:46:26.320 回答