因为这个需求的确很复杂,上面这些例子有可能还不能完全覆盖你的所有情况,你先试试吧,上面这三种是都满足了
<script language=javascript>
var str='http://test.abc.com/List.aspx?Pages=3';
var str="http://test.abc.com";
var str="http://www.test.abc1.com/List.aspx?Pages=3"
re=/^(http:\/\/)(www.)?([^\.]+)(\.[^\/]+)((\/)([^\?]+)(\?)?(.*))?$/
alert(str.replace(
re,function(a,b,c,d,e,f,g,h,i,j){
if(!f)
{
return b+"www"+e+"?User="+d
}
return b+"www"+e+g+h+i+j+((i)?'&User=':'?User=')+d
}
)
)

</script>

解决方案 »

  1.   

    re = /http:\/\/(?:www\.)?(\w+)\.(\w+)\.com(?:\/?|[^?]*)(.*)/ig;
    str.replace(re,"http://www.$2.com/?$3&User=$1");
      

  2.   

    <SCRIPT LANGUAGE="JavaScript">
    var s = "http://www.test.abc.com/List.aspx?Pages=3";//   (注意,这种格式也是存在的)
    //http://www.abc.com/List.aspx?Pages=3&User=testvar r = /^https?:\/\/(www\.)?(\w+)\.abc\.com\/([^\?]+)(\?(.+))?$/i;
    s = s.replace(r, "http://www.abc.com/$3?User=$2&$5");
    alert(s)
    </SCRIPT>
      

  3.   

    //上面一个对用户名的匹配度可能不够全<SCRIPT LANGUAGE="JavaScript">
    var s = "http://www.test.abc.com/List.aspx?Pages=3";//   (注意,这种格式也是存在的)
    //http://www.abc.com/List.aspx?Pages=3&User=testvar r = /^https?:\/\/(www\.)?([^\.]+)\.abc\.com\/([^\?]+)(\?(.+))?$/i;
    s = s.replace(r, "http://www.abc.com/$3?User=$2&$5");
    alert(s)
    </SCRIPT>
      

  4.   

    哎,想复杂了,下面这样做可能更保险些
    <script language=javascript>
    var str='http://test.abc.com/List.aspx?Pages=3';
    //var str="http://test.abc.com";
    //var str="http://www.test.abc1.com/List.aspx?Pages=3"
    re=/\/\/(www.)?([^\.]+)\./
    re.test(str)
    var userName=RegExp.$2
    str=str.replace(re,"\/\/www.")
    alert(str+((str.indexOf("?")==-1)?"?User=":"&User=")+userName)

    </script>
      

  5.   

    这个需求是应用在一个 asp.net 的项目里。配置的节点如下
    <RewriterRule>
      <LookFor>友好URL</LookFor>
      <SendTo>实际URL</SendTo>
    </RewriterRule>
    -----------------------------------------------------
    感谢几位的解答,但是我始终无法将各位的代码转移进 web.config 里。
    现在请大家帮忙实现成这样。【友好URL】:无下划线“_”同时不包括“/index.aspx”字符
    【实际URL】:解析的规则如下
      

  6.   

    我知道你是用在web.config里的重写路径,所以才会那样写!