我想将变量str'
替换为<span class="red">str'</span>
,但我总是获得跨度的"'"
outes。我写了以下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>;
答案 0 :(得分: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"
我认为您的预期结果是什么?也许您只需要仔细检查您的报价/字符串变量?
答案 1 :(得分: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'并用红色类别span包围它。如果您只想突出显示X',请取出patt变量中的?
(?使撇号可选)。
编辑:
Soluction:
问题是我在同一个字符串上使用了replace两次。像这样的东西
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>");
非常感谢:)