<script language=javascript>
var str="/test/(.*)"
var str2="/asd/vbn"
var str3="fgh/asd/vbn"
var re=/^([^\/]*?)(\/(?!(test)))([^\/]*)(.*)/
var result=str.replace(re,"$1\/test$5")
alert(result)
var result=str2.replace(re,"$1\/test$5")
alert(result)
var result=str3.replace(re,"$1\/test$5")
alert(result)
</script>

解决方案 »

  1.   

    你好,可能我的意思你误解了,我的要求是:      /aa  =>  /test/aa
         /bb/cc  ==> /test/bb/cc
         /aa/bb/cc/test.css  => /test/aa/bb/cc/test.css就是将/前面多追加一个/test就可以了,但要注意,如果是/test/aa的话,则替换之后仍然为/test/aa,而不能变成/test/test/aa。说的有些混乱,不知道该如何表述的清楚:(
      

  2.   

     <script language=javascript >
    var str="/test/(.*)"
    var str2="/asd/vbn"
    var str3="/fgh/asd/vbn"
    var re=/^(\/(?!(test)))(.*)/
    var result=str.replace(re,"/test$1$3")
    alert(result)
    var result=str2.replace(re,"/test$1$3")
    alert(result)
    var result=str3.replace(re,"/test$1$3")
    alert(result)
    </script >
      

  3.   

    谢谢,这个对了,不过好像还有一点问题
    对于/test123/aa/bb这类的,用这个正则好像无法替换,还是/test123/aa/bb正常应该变成/test/test123/aa/bb。也就是说第一个/之中,如果包含test,就不会进行正则替换。我先改改看,期待你的答案。
      

  4.   

    你这个东西,
    假如说
    /test
    它替换成
    /test/test么?
      

  5.   

    /test不能替换成/test/test,这个是例外情况。你可以看看下面的例子:/aa  =>/test/aa
    /aa/bb =>/test/aa/bb
    /aa/bb/cc.css =>/test/aa/bb/cc.css/test/aa =>/test/aa
    /test/bb/cc =>/test/bb/cc也就是说,如果一个字符串中,首位已经含有/test,就不需要进行转换,否则,需要在前面追加/test,不知道这样解释清楚没有?楼上的4星大哥基本已经实现了,不过还差一点,对于/test_sdf/aa/bb这种情况,也就是说首位包含/test,但是并不完全是/test的这种情况,目前还无法进行替换。
      

  6.   

     <script language=javascript  >
    var str="/test/(.*)"
    var str2="/asd/vbn"
    var str3="/fgh/asd/vbn"
    var str4="/test123/asd/vbn"
    var str5="/test"
    var re=/^(\/(?!(test\/|test$)))(.*)/
    var result=str.replace(re,"/test$1$3")
    alert(result)
    var result=str2.replace(re,"/test$1$3")
    alert(result)
    var result=str3.replace(re,"/test$1$3")
    alert(result)
    var result=str4.replace(re,"/test$1$3")
    alert(result)
    var result=str5.replace(re,"/test$1$3")
    alert(result)
    </script>
      

  7.   


    <script type="text/javascript"> 
    var str="/test/(.*)"
    var str2="/asd/vbn"
    var str3="/fgh/asd/vbn"
    var str4 = "/test123/aa/bb";
    var str5 = "/test"
    var re=/^(\/(?!test(?:\/| |$)))/
    var result=str.replace(re,"/test$1")
    alert(result)
    var result=str2.replace(re,"/test$1")
    alert(result)
    var result=str3.replace(re,"/test$1")
    alert(result) 
    var result=str4.replace(re,"/test$1")
    alert(result) 
    var result=str5.replace(re,"/test$1")
    alert(result) 
    </script>
      

  8.   

    晕,我的是帖上去被转换了的,原来是这样的
     <script language=javascript  >
    var str="/test/(.*)"
    var str2="/asd/vbn"
    var str3="/fgh/asd/vbn"
    var str4="/test123/asd/vbn"
    var str5="/test"
    var re=/^(\/(?!(test\/|test$)))(.*)/
    var result=str.replace(re,"/test$1$3")
    alert(result)
    var result=str2.replace(re,"/test$1$3")
    alert(result)
    var result=str3.replace(re,"/test$1$3")
    alert(result)
    var result=str4.replace(re,"/test$1$3")
    alert(result)
    var result=str5.replace(re,"/test$1$3")
    alert(result)
    </script>
      

  9.   

    晕,还是被转换了,把正则里所有的#号替换掉
      <script language=javascript  >
    var str="/test/(.*)"
    var str2="/asd/vbn"
    var str3="/fgh/asd/vbn"
    var str4="/test123/asd/vbn"
    var str5="/test"
    var re=/#^#(#\#/#(#?#!#(#t#e#s#t#\#/#|#t#e#s#t#$#)#)#)#(#.#*#)#/
    var result=str.replace(re,"/test$1$3")
    alert(result)
    var result=str2.replace(re,"/test$1$3")
    alert(result)
    var result=str3.replace(re,"/test$1$3")
    alert(result)
    var result=str4.replace(re,"/test$1$3")
    alert(result)
    var result=str5.replace(re,"/test$1$3")
    alert(result)
    </script>