我用正则表达式/(^\s*)/g匹配任何空白字符 但是又想不替换掉单一的右斜杠“\”。请问该正则表达式该怎样完善?既要替换掉空白字符 但是单独的右斜杠要保留 比如:B J\CD 不要把那个右斜杠替换掉了 要变为:BJ\CD望各位大虾赐教。谢谢!

解决方案 »

  1.   

    这个貌似不是正则表达式的问题……
    例子如下:  <SCRIPT LANGUAGE="JavaScript">
      <!--
    var str1 = "B   J\CD";
    var str2 = "B   J\\CD"; //必须写成双斜杠才认
    alert(str1 +"\n"+ str2);
    var reg = /\s/g
    document.write(str1.replace(reg,'')+"<br>")
    document.write(str2.replace(reg,''))
      //-->
      </SCRIPT>
      

  2.   

    alert('B J\CD'.replace(/\s*/g, '').replace(/\C/g, '\\C'))
    哈哈,开个玩笑。JS脚本中的反斜杠本身已内置为转义符,因此不能直接在脚本中键入一个单独的反斜杠。例如:“\C”、“\s”、“\d”、“"abcd"\”有义,而“\”无义。如果字串源可控,你原本就应该写成“B J\\CD”或者escape()成“B%20J%5CCD”;如果不可控,AJAX读取并不会存在你说的那问题。
      

  3.   

    不知道LZ是否明白。JS中的反斜杠是转义,在/\s/g中是对s转义,而/\\/g中两斜杠作用都是转义,究竟对谁转义呢?
    AJAX读取不影响,否则,该网页上根本就无法显示出斜杠“\”来。同样地alert()也不会发生该问题。<script src="http://code.jquery.com/jquery-1.4.2.js"></script>
    <script>
    var path="http://topic.csdn.net/u/20100329/17/6840c40f-9efc-4eed-9980-b875eec8a6eb.html?seed=967354520&r=64280870#r_64280870";
    $.get(path, function(o){
          var str=o.match(/(<div[^>]+msgfont[^div]+?\/div>)/g).join("");
          alert(str.replace(/<[^>]+>/g,""))
    })
    </script>
      

  4.   

    alert("B J\CD");//"B JCD"
    alert("B J\\CD");//"B J\CD"