var str = '  abc  abc abd  ss ';
alert(str);
var reg = /(^\s*)|(\s*$)/;
str = str.replace(reg,"");
str = str.replace(/\s{1,}/g," ");
alert(str);

解决方案 »

  1.   

    是插到了textarea的最前面,
    re:
    textarea.value+=""
      

  2.   

    1楼的,你的你自己验证一下结果:
    var str = '  abc  abc abd  ss '; 
    alert(1+str+1); 
    var reg = /(^\s*)|(\s*$)/; 
    str = str.replace(reg,""); 
    str = str.replace(/\s{1,}/g," "); 
    alert(1+str+1);我再给我写的:function Trim(s) {
      var value= s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
      return (value == null) ? "" : value[1];
    }
    var str1="1";
    var str2="  abc  abc abd  ss ";
    var str3="1";
    var str4="清除前:"+a1+a2+a3;
    var str5="清除后:"+a1+Trim(a2)+a3;
    alert(str4+"\n"+str5);
      

  3.   

    function Trim(s) {
      var value= s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
      return (value == null) ? "" : value[1];
    }
    var str1="1";
    var str2="  abc  abc abd  ss ";
    var str3="1";
    var str4="清除前:"+str1+str2+str3;
    var str5="清除后:"+str1+Trim(str2)+str3;
    alert(str4+"\n"+str5);.....手误
      

  4.   

    还是忘了你中间的只保留一个空格
    <script type="text/javascript">
    function Trim(s) {
      var value= s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
      return (value == null) ? "" : value[1].replace(/\s{1,}/g," ");
    }
    var str1="1";
    var str2="  abc  abc abd  ss ";
    var str3="1";
    var str4="清除前:"+str1+str2+str3;
    var str5="清除后:"+str1+Trim(str2)+str3;
    alert(str4+"\n"+str5);
    </script> 
      

  5.   

    1: str = str.replace(/^\s+|\s+$|(\s)\s+/g, "$1");2: 不懂
      

  6.   


    String.prototype.LRTrim = function(){
       return (this.replace(/^[\s ]/g, "")).replace(/[\s ]$/g, "");
    }
    String.prototype.MTrim = function(){
       return this.replace(/[\s ]+/g, " ");
    }
    var str = '  abc  abc       abd  ss '; 
    alert(str.LRTrim().MTrim())
      

  7.   

    第二问题,你保存一下之前的rang应该就可以解决了.
      

  8.   

    this.Replace(/^[\s ]|[\s ]$/g,"")