2

私のサイトには、入力テキストフィールドで検索された単語を含むdivを強調表示するスクリプトがあります。æ、ø、å(デンマーク語の文字)で始まる単語を検索すると失敗しますが、単語の他の場所にある場合は失敗しません。

私はjsfiddleを作成しました:

http://jsfiddle.net/8Y3cM/

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

helloを検索すると、両方にhelloが含まれているため、最初の2つのdivが強調表示されていることがわかります。ただし、「ælle」を検索しても、含まれているdivは強調表示されません。

誰かがこれに対する解決策を持っていることを願っています-事前に感謝します!(:

4

3 に答える 3

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 に答える
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

Use:

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

Fiddle: http://jsfiddle.net/8Y3cM/15/

Thanks to Source

于 2013-03-01T11:32:00.933 に答える