先说说我的问题吧,我用了一个ewebeditor控件,而且是很多个,要为某个对象动态赋值,所以涉及到一些id的定义方式,,所以需要用到eval函数来处理。然后呢就遇到了一个问题,那就是下面代码中取到的val的值中会用到一些带有样式的字符串,字符串如下所示。
"答案:<P style="LINE-HEIGHT: 150%; MARGIN-LEFT: 17.95pt" class=MsoNormal></P>"
意思就是里面也有一些双引号,会导致这个eval函数调用时会出错。我现在就是想处理一下这个val串,把里面的双引号换成\",下面的代码只是把双引号变成了单引号,但是我不知道怎么换成我想要的\". var val = document.getElementById("hide_r"+n+"_c"+i+r).value;
val=val.replace(/"([^"]*)"/g, "'$1'");
eval("editor1"+n+".setHTML('"+val+"')");问题1,请帮我解决一下上面提到的问题。
问题2,val=val.replace(/"([^"]*)"/g, "'$1'");这里面的$1代表什么意思?请朋友们详细讲解一下这第二个参数。谢谢了。
呵呵,我向来分配分配均匀,这个大家不要担心。呵呵。
各抒己见,来者欢迎。
"答案:<P style="LINE-HEIGHT: 150%; MARGIN-LEFT: 17.95pt" class=MsoNormal></P>"
意思就是里面也有一些双引号,会导致这个eval函数调用时会出错。我现在就是想处理一下这个val串,把里面的双引号换成\",下面的代码只是把双引号变成了单引号,但是我不知道怎么换成我想要的\". var val = document.getElementById("hide_r"+n+"_c"+i+r).value;
val=val.replace(/"([^"]*)"/g, "'$1'");
eval("editor1"+n+".setHTML('"+val+"')");问题1,请帮我解决一下上面提到的问题。
问题2,val=val.replace(/"([^"]*)"/g, "'$1'");这里面的$1代表什么意思?请朋友们详细讲解一下这第二个参数。谢谢了。
呵呵,我向来分配分配均匀,这个大家不要担心。呵呵。
各抒己见,来者欢迎。
我把代码调试的结果贴出来吧。var val = document.getElementById("hide_r"+n+"_c"+i+r).value;
//这一步执行完成后的结果
/*
"答案:
<STYLE>
/* Generator: eWebEditor */
p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;font-size:10.5pt;font-family:Calibri;}
div.Section1 {page:Section1;}
</STYLE><P style="LINE-HEIGHT: 150%; MARGIN-LEFT: 17.95pt" class=MsoNormal><SPAN><SPAN style="COLOR: black">
<P style="LINE-HEIGHT: 150%; MARGIN-LEFT: 17.95pt" class=MsoNormal><A name=OLE_LINK4><SPAN style="FONT-FAMILY: 宋体; COLOR: black">解:答案为</SPAN><SPAN>C</SPAN></A><SPAN><SPAN style="FONT-FAMILY: 宋体">,集合</SPAN><SPAN><IMG style="VERTICAL-ALIGN: middle" src="/uploadfile/20100719214934001.gif" width=249 height=27></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">,</SPAN></P></SPAN></SPAN>
<P></P>"
*///上一步执行后的结果,发现没?只替换了一个
/*
"答案:
<STYLE>
/* Generator: eWebEditor */
p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;font-size:10.5pt;font-family:Calibri;}
div.Section1 {page:Section1;}
</STYLE><P style=\"LINE-HEIGHT: 150%; MARGIN-LEFT: 17.95pt" class=MsoNormal><SPAN><SPAN style="COLOR: black">
<P style="LINE-HEIGHT: 150%; MARGIN-LEFT: 17.95pt" class=MsoNormal><A name=OLE_LINK4><SPAN style="FONT-FAMILY: 宋体; COLOR: black">解:答案为</SPAN><SPAN>C</SPAN></A><SPAN><SPAN style="FONT-FAMILY: 宋体">,集合</SPAN><SPAN><IMG style="VERTICAL-ALIGN: middle" src="/uploadfile/20100719214934001.gif" width=249 height=27></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">,</SPAN></P></SPAN></SPAN>
<P></P>"
*/
val = val.replace(/"/g, "\\\"");$1表示匹配的第一个捕获组(就是用正则中括号里的东西进行替换)
http://msdn.microsoft.com/en-us/library/t0kbytzc%28v=VS.85%29.aspx
需要注意的是,$0是固定存在的,表示整个表达式匹配结果参考
正则基础之——捕获组(capture group)
我现在用val = val.replace(/"([^"]*)"/g,"\\\"$1\\\"");这个表达式就可以解决了。
至于9楼的方式我早试过了。貌似不行。呵呵。
仍然继续欢迎大家的指点。来多点人,多给点分。大家互相学习。
虽然问题很简单,但大家积极性不怎么高哦。呵呵。
再次感谢所有来此顶贴的朋友。
顶贴是一种美德。
中午我就结贴了。想发言的朋友,仍然欢迎。