1
var stringToHighlight = [userinput] // may be any string like "foo", "bar" or "."
var stringToBeHighlighted = [any text] // Lorem Ipsum ...

これまでのところ私は

var regex = new RegExp(stringToHighlight, "g")                  
var highlightedString = stringToBeHighlighted.replace(regex, "<span class='highlight'>$&</span>")

これは、文字「。」では機能しません。たとえば、正規表現のメタ文字として解釈されているためです。しかし、実際の文字「。」ではありません。その結果、すべてのテキストが強調表示されます。これらの特別なメタ文字を除外するにはどうすればよいですか?

4

2 に答える 2

1

JSには、正規表現のメタ文字をエスケープするための組み込み関数はありませんが、この関数を使用できます(この回答から):

function quotemeta(str){
    return str.replace(/[.+*?|\\^$(){}\[\]-]/g, '\\$&');
}

これは次のように使用されます:

var regex = new RegExp(quotemeta(stringToHighlight), "g");
于 2012-06-12T16:46:16.357 に答える
0

実際の正規表現を入力する必要があります(「。」の前に「\」を配置してエスケープします)。または、http://phpjs.org/functions/strstr:551などの関数を使用して文字列を検索できます。リテラル

于 2012-06-12T16:48:44.160 に答える