<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>
解决方案 »
- Ext中内嵌了一个html 页,如何将window中的内容传给这个html页 然后打印?
- 2D绘图的动态改变
- 关于JS的if判断语句中的双重否定(if(!!X))的疑问?
- showModalDialog 中使用 locatin.href 问题
- JS禁止缓存
- javascript怎样删除一个html元素?
- 求htmlarea3.0rc1中文版
- 使用javascript实现关于checkbox的功能(本人只有60分了,不好意思)
- 很菜的问题,谁也会,就我不会,在线等!!!
- 哪位高手解释一下这段代码?谢谢!
- [高分]急求popup形式的日历控件,分不够可再加~~~~~~~~~`
- [求助]鼠标放到图片上时,图片停止滚动
其实上面的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”
不用正则,如下:
/////////////////////////////////////////<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>