7

単純な正規表現の検索と置換機能があり、大文字と小文字を区別しない検索で大文字と小文字を区別する置換を行う良い方法があるかどうか疑問に思っていましたか?以下の例:

function filter(searchTerm) {
    var searchPattern = new RegExp(searchTerm, 'ig');
    ....
    textToCheck = textToCheck.replace(searchPattern, '<span class="searchMatchTitle">' + searchTerm + '</span>');

関数の上部にある検索語には国会議事堂が含まれている可能性があり、上部または下部を含む任意の文字列と一致させたいため、「i」フラグを使用しました。

元の検索文字列(任意の組み合わせである可能性があります)を取得し、異なるフォーマットが存在する可能性がある場合にその置換を使用するため、置換を実行すると奇妙な結果になります。

元のフォーマットを保持し、その周りにスパンを追加するのが大好きです。私のアプローチは最善の方法ですか?もしそうなら、Perlと同じようにグループを使用できますか?例えば

s/ \(=\+\) /\1/g

同様のタイプの構文と例をWebから使用しようとすると、リテラル文字列が置き換えられます。

4

2 に答える 2

8
function filter(searchTerm) {
    var searchPattern = new RegExp('('+searchTerm+')', 'ig');
    ....
    textToCheck = textToCheck.replace(searchPattern, '<span class="searchMatchTitle">$1</span>');
    ...
}
于 2012-10-11T12:43:27.970 に答える
3

グループを使用できますが、構文は少し異なります。次のようなものを試してください。

var str = 'this is a dog eat Dog eat DOG world'
str = str.replace(/(dog)/gi, '<span>$1</span>')

// str is now: "this is a <span>dog</span> eat <span>Dog</span> eat <span>DOG</span> world"
于 2012-10-11T12:42:57.900 に答える