<script>
  function replace2(str){
    do{
      str=str.replace(/\w+\/\.\.\//,"");
      if(!/\w+\/\.\.\//.test(str)) break;
    }while(true)
    return str;
  }
alert(replace2("http://www.aaa.com/aaa/bbb/ccc/ddd/../../images.gif"));
</script>

解决方案 »

  1.   

    url = "http://www.aaa.com/aaa/bbb/ccc/ddd/../../images.gif" (1)
    其实上面的url应该为:"http://www.aaa.com/aaa/images.gif" (2)////////////////////////////////////////////////////////////说得不太正确:
    http://www.aaa.com/aaa/bbb/ccc/ddd/../../images.gif在跟径中,一个“../”表示一个父目录现在,当前目录是“ddd”,其一层父目录是“ccc”,二层父目录是“bbb”所以真实的url应该为“http://www.aaa.com/aaa/bbb/images.gif”
    而不是“http://www.aaa.com/aaa/images.gif”
      

  2.   


    不用正则,如下:
    /////////////////////////////////////////<script>
      function replace2(str){
        var c=0;
        var errN=false;
        try{
          var v=str.split("/")
          var Np=v[v.length-1];
          for(i=v.length-2;i>-1;i--){
            if(v[i]=="..") c++;
            else{
              if(c==0) Np=v[i]+"/"+Np;
              else c--;
            }
          }
        }catch(e){errN=true;}
        if(Np.indexOf("://www.aaa.com")<0) errN=true;
        Np=errN?"错误路径!":Np;
        return Np;
      }
    alert(replace2("http://www.aaa.com/aaa/bbb/ccc/ddd/../../images.gif"));
    </script>