先说说我的问题吧,我用了一个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代表什么意思?请朋友们详细讲解一下这第二个参数。谢谢了。
呵呵,我向来分配分配均匀,这个大家不要担心。呵呵。
各抒己见,来者欢迎。

解决方案 »

  1.   

    http://www.360doc.com/content/08/0401/18/3123_1157729.shtml 这个网站都是正则表达式...
      

  2.   

    这个哥们,你的意思我懂,可是仍然不可以。呵呵。
    我把代码调试的结果贴出来吧。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>&nbsp; 
    <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>&nbsp; 
    <P></P>"
    */
      

  3.   

    javascript的replace方法只替换第一个匹配,要写成正则表达式并指定全局匹配
    val = val.replace(/"/g, "\\\"");$1表示匹配的第一个捕获组(就是用正则中括号里的东西进行替换)
    http://msdn.microsoft.com/en-us/library/t0kbytzc%28v=VS.85%29.aspx
      

  4.   

    在替换结构中,$number是对第number个捕获组匹配结果的引用
    需要注意的是,$0是固定存在的,表示整个表达式匹配结果参考
    正则基础之——捕获组(capture group)
      

  5.   

    呵呵,谢谢9楼和10楼的解释。
    我现在用val = val.replace(/"([^"]*)"/g,"\\\"$1\\\"");这个表达式就可以解决了。
    至于9楼的方式我早试过了。貌似不行。呵呵。
    仍然继续欢迎大家的指点。来多点人,多给点分。大家互相学习。
      

  6.   

    换行也解决了,val = val.replace(/"([^"]*)"/g,"\\\"$1\\\"").replace(/\s+/g,""); 
    虽然问题很简单,但大家积极性不怎么高哦。呵呵。
    再次感谢所有来此顶贴的朋友。
    顶贴是一种美德。
    中午我就结贴了。想发言的朋友,仍然欢迎。