var t="abc+\"def\"+'ghi'+jkl+'sdsd\"+\"jooio'";
alert(t);
alert(t.replace(/('(.*?)')/,'').replace(/"(.*?)"/,''));

解决方案 »

  1.   

    ("(.*?)")
    这个表达式不行啊,还是转义符\"的问题,
    引号中有\"时就错了abc+"d\"ef"+'ghi'+jkl+'sdsd"+"jooio'
    转出来是abc+ef"++jkl+'sdsd"+"jooio' 还有能不能一次替换搞定呢?var t="abc+\"d\\\"ef\"+'ghi'+jkl+'sdsd\"+\"jooio'";
    alert(t);
    alert(t.replace(/('(.*?)')/,'').replace(/"(.*?)"/,''));
      

  2.   


    var str="abc+\"ddd\\\"eee\\\'fff\\\\\"+'ggg\\\"hhh\\\'iii\\\\'+\'jkl\"+mno";
        alert(str.replace(/\\/g,"").replace(/'[^+]*'/g,"").replace(/"[^+]*"/g,""));
      

  3.   

    参考了rui888和MengYouXuanLv的思路,
    我最终写了
    str.replace(/(([^\\])\\["'])|(^\\["'])/g,'$2').replace(/"(.*?)"/g,"").replace(/'(.*?)'/g,""),
    不对称引号实在实现不了,只好算了,
    谢谢两位;var str="\\\"(10-9)+\"\\\"ddd\\\"e='+\"()ee\\\'fff\\\\\"-'ggg\\\"hhh\\\'iii\\\\'+\'jkl\"+\"jkl\'+\\\"mno";
    document.write(str+"<br />")
    document.write(str.replace(/(([^\\])\\["'])|(^\\["'])/g,'$2').replace(/"(.*?)"/g,"").replace(/'(.*?)'/g,"")+"<br />")