0

次のメソッドは、大きな文字列の部分文字列を強調表示します。私が望むのは*、任意の長さの任意の文字列を表す特殊文字をサポートすることです。たとえば*、検索テキスト フィールドに を入力すると、読み込まれたテキスト ファイル全体が強調表示されます。入力が になると*a、「a」で終わるすべての単語が強調表示されます。' a ' は、 を含むすべての単語に一致しますa。ただし、現時点では*キャラクターもピックアップされていません。この問題を解決するにはどうすればよいですか? 前もって感謝します..

function search() {
    var hid = document.getElementById('hidtxt').value;
    if(hid.length == 0) hid.value=document.getElementById("input").innerHTML;
        var text = document.getElementById("searchText").value;
       if (!text) return;
        var regex =  new RegExp(text, 'gi');
            document.getElementById("input").innerHTML = hid.replace(regex, '<span style="background-color:yellow;">$&</span>');


    }
4

1 に答える 1

0

入力フィールドを正規表現に簡単に変換できるとは思いません。

.*有効な正規表現でなければならないため、アスタリスクだけでは一致しません。

入力文字列など、他のケースではさらに複雑になります。blah bla bl bla *837465jfbnrja

.*a文字列全体に一致しますが、おそらく後は取得bla blaし、個別の一致として取得することです(単語*837465jfbnrjaの強調表示について言及しているように)

それを機能させるには、正規表現は、空白文字ではないすべての非貪欲な一致である必要があります。

\b(?:[^\s])*?a\b

ここでいくつかの組み合わせを試してみると、アイデアが得られます。

http://regexpal.com/

許可したい一連の固定ルールを考え出す必要があります。次に、許可された特殊文字を正規表現に変換して機能させることができます。

于 2013-05-14T07:03:08.473 に答える