replaceLeftChar(“AAABBAAA”,"A","X")
结果:XXXBBAAA
从字符串左端开始替换A成X,不能替换就截止正则 var reg=/^(A)+/
结果是:XBBAAA
把所有的A替换成了一个X我想一个A换一个X,有多少个A就换成多少个X
单纯用正则,可以实现吗?我觉得还是得结合循环来做?

解决方案 »

  1.   

    alert( "AAABBAAA".replace(/A/g,"X") );
      

  2.   

    你的结果是:XXXBBXXX
    我只替换左端的,你这个把左右两端的A全部给替换
      

  3.   

    try...<script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
            var reg = new RegExp(oldStr + "+");
            return  src.replace(reg, function($0){ return (new Array($0.length+1)).join(newStr);});
        }
        alert(replaceLeftChar("AAABBAAA", "A", "X"));
    </script>
      

  4.   

    为避免动态拼接正则时可能出现的脚本错误,优化一下<script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
        var reg = new RegExp(escape(oldStr) + "+");
        return  src.replace(reg, function($0){ return (new Array($0.length+1)).join(newStr);});
        }
        alert(replaceLeftChar("AAABBAAA", "(", "X"));
    </script>
      

  5.   

    替换的效果是一样的,只不过在待替换字符中出现“(”这类正则中的元字符时,不会报脚本错误了<script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
        var reg = new RegExp(escape(oldStr) + "+");
        return  src.replace(reg, function($0){ return (new Array($0.length+1)).join(newStr);});
        }
        alert(replaceLeftChar("AAABBAAA", "A", "X"));
    </script>
      

  6.   


    replaceLeftChar("AAABBAAA", "AA", "X") 结果:XABBAAA
    replaceLeftChar("AAABBAAA", "AAA", "X") 结果:XBBAAA顺便写个右端处理的,呵呵
      

  7.   


    上面用的new Array($0.length+1)).join(newStr)确实只适用于一个字符
    看下这样是不是你要的效果
    <script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
            var regSel = new RegExp(escape(oldStr) + "+");
            var regSin = new RegExp(escape(oldStr));
            return  src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
        }
        alert(replaceLeftChar("AAABBAAA", "AA", "XX"));
    </script>
    /*-------输出--------
    XXABBAAA
    */
      

  8.   

    顺便问下一个数据的精度问题
    alert(Number("9999999999999.999000000004"));
    alert(Number("99999999999999.99999999999"));我想原封不动的转换为数字,但是出来的结果却发生了变化
    能使它不变化吗可能是数太大了
      

  9.   


    从你的例子上,没问题
    对于任意的字符还是有点问题,比如
    alert(replaceLeftChar("中国ZHONGUO", "中国", "CHINA"));
    处理不了
      

  10.   


    如果这样的话,就不能用escape处理元字符了,因为它会把中文编码,如果要处理这个异常,需要自己另写函数了<script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
            var regSel = new RegExp(oldStr + "+");
            var regSin = new RegExp(oldStr);
            return  src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
        }
        alert(replaceLeftChar("中国ZHONGUO", "中国", "CHINA"));
    </script>
      

  11.   

    alert(replaceLeftChar("中国中国ZHONGUO", "中国", "CHINA"));
    只能替换第一个中国,第二个中国不能替换
    从左端开始替换,连续的替换,直至不能替换,中间断层后就中止
      

  12.   

    呵呵,当时是按一个字符考虑的<script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
            var regSel = new RegExp("(" + oldStr + ")+");
            var regSin = new RegExp(oldStr, "g");
            return  src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
        }
        alert(replaceLeftChar("中国中国ZHONGUO", "中国", "CHINA"));
    </script>
      

  13.   

    如果可能还有忽略大小写的需求<script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
            var regSel = new RegExp("(" + oldStr + ")+", "i");
            var regSin = new RegExp(oldStr, "ig");
            return  src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
        }
        alert(replaceLeftChar("中国中国ZHONGUO", "中国", "CHINA"));
    </script>
      

  14.   

    我略微改动了下
    对应左端:var regSel = new RegExp("^(" + oldStr + ")+");
    对应右端:var regSel = new RegExp("(" + oldStr + ")+^");
      

  15.   

    全部替换:var regSel = new RegExp("(" + oldStr + ")");
    这个不对吗处理完了,结贴
      

  16.   

    我最简单的却不会了
    var regSel = new RegExp(oldChar,"g");
    只用这一个就可以了
      

  17.   

    对应右端,如果你确认要替换的子字符串就在结尾,那可以这样<script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
            var regSel = new RegExp("(" + oldStr + ")+$", "i");
            var regSin = new RegExp(oldStr, "ig");
            return  src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
        }
        alert(replaceLeftChar("中国中国ZHONGUO中国中国", "中国", "CHINA"));
    </script>如果不确定,比如待替换内容右侧还可能有一些其它字符,那可以这样
    <script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
            var regSel = new RegExp("(" + oldStr + ")+(?:(?!" + oldStr + ")[\\s\\S])*$", "i");
            var regSin = new RegExp(oldStr, "ig");
            return  src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
        }
        alert(replaceLeftChar("中国中国ZHONGUO中国中国ABC", "中国", "CHINA"));
    </script>
      

  18.   

    对应左端,也是两种情况,如果你确认要替换的子字符串就在开头,那可以这样
    <script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
            var regSel = new RegExp("^(" + oldStr + ")+", "i");
            var regSin = new RegExp(oldStr, "ig");
            return  src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
        }
        alert(replaceLeftChar("中国中国ZHONGUO中国中国", "中国", "CHINA"));
    </script>如果不确定,比如待替换内容左侧还可能有一些其它字符,那可以这样
    <script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
            var regSel = new RegExp("(" + oldStr + ")+", "i");
            var regSin = new RegExp(oldStr, "ig");
            return  src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
        }
        alert(replaceLeftChar("ABC中国中国ZHONGUO中国中国", "中国", "CHINA"));
    </script>替换全部就没什么好说的了,一个g参数就搞定了
    <script type="text/javascript"> 
        function replaceLeftChar(src, oldStr, newStr)
        {
            var reg = new RegExp(oldStr, "ig");
            return  src.replace(reg, newStr);
        }
        alert(replaceLeftChar("ABC中国中国ZHONGUO中国中国", "中国", "CHINA"));
    </script>
      

  19.   

    对应右端:var regSel = new RegExp("(" + oldStr + ")+$");