1

str'variableをに置き換えたいのですが<span class="red">str'</span>、常に"'"スパンの外側を取得します。私は次のJavaScriptを書きました:

var f1="XY+X'Y";
var str=X;
var patt=new RegExp(str+'\'',"g");
f1.replace(patt, "<span class=\"red\">"+str+"'"+"</span>")

私は得る:

<span class="red">X</span>';

私が欲しい:

<span class="red">X'</span>;
4

2 に答える 2

2

評価したら

var f1="XY+X'Y";
var str="X";
var patt=new RegExp(str+'\'',"g");
f1.replace(patt, "<span class=\"red\">"+str+"'"+"</span>")

私は得る

"XY+<span class="red">X'</span>Y"

あなたの意図した結果はどれだと思いますか?たぶん、引用符/文字列変数を再確認する必要がありますか?

于 2012-04-17T18:23:40.253 に答える
0

あなたは正規表現で「X」を検索していて<span ...>X''</span>、私が見る限りそれを置き換えています。あなたのコードにはいくつかの問題があるようです、そして私はあなたが与えられたコードからどちらかの結果(あなたが得るものまたはあなたが望むもの)をどのように得ると期待するのかわかりません。この代替案を提案してもいいですか?

var f1="XY+X'Y";
var str="X";
var patt=new RegExp(str+"\'?","g");
f1.replace(patt, "<span class=\"red\">$&</span>")

これにより、ソース内でXまたはX'が検出され、赤いクラススパンで囲まれます。X'のみを強調表示する場合?は、patt変数のを削除します(?はアポストロフィをオプションにします)。

編集:

解決策:

問題は、同じ文字列でreplaceを2回使用することでした。このようなもの

var str =f1.replace(patt, "<span class=\"red\">"+str+"</span>").f1.replace(patt, "<span class=\"red\">"+str+"'"+"</span>")

これは私のために働きます:

var str =f1.replace(patt, "<span class=\"red\">"+str+"</span>");
var str2=str.replace(patt, "<span class=\"red\">"+str+"'"+"</span>");

とにかくありがとう :)

于 2012-04-17T18:32:49.567 に答える