RegExp - 替换报价不起作用

时间:2012-04-17 18:14:12

标签: javascript regex str-replace

我想将变量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>;

2 个答案:

答案 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>");

非常感谢:)