2012-04-17 56 views
1

我想用<span class="red">str'</span>替换变量str',但我总是获得跨度的外部"'"。我写了下面的javascript:RegExp - 替换报价不起作用

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>; 
+1

为'无功F1 = XY + X'Y'应该是'VAR F1 =“XY + X'Y“'? – 2012-04-17 18:17:06

回答

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变量中取出?(?使得撇号可选)。

编辑:

Soluction:

问题是,我使用相同的字符串替换两次。这样

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

不管怎样,谢谢:)

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" 

我认为这是您的预期结果?也许你只需要仔细检查你的报价/字符串变量?