あなたは正規表現で「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>");
とにかくありがとう :)