日期:2014-05-16  浏览次数:20590 次

求几个正则表达式
具体需求是这样的。
数据如下三组,前一个是浏览器地址上的地址,后面一个实际请求的地址

http://test.abc.com
http://www.abc.com/?User=test


http://test.abc.com/List.aspx?Pages=3
http://www.abc.com/List.aspx?Pages=3&User=test

http://www.test.abc.com/List.aspx?Pages=3       (注意,这种格式也是存在的)
http://www.abc.com/List.aspx?Pages=3&User=test

--------------------------------------------------
其中   test   是会员的帐号。   abc.com   是域名。这两者都是可变的。
换句话来说,就是把所有泛域名的请求,全部转移到其根域名的   www   主机上进行;

将会员参数传入时。如果请求的   URL   有参数,用   &   加上参数,反之用   ?   。

欢迎大家帮助,谢谢.


------解决方案--------------------
因为这个需求的确很复杂,上面这些例子有可能还不能完全覆盖你的所有情况,你先试试吧,上面这三种是都满足了
<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>
------解决方案--------------------
//上面一个对用户名的匹配度可能不够全

<SCRIPT LANGUAGE= "JavaScript ">
var s = "http://www.test.abc.com/List.aspx?Pages=3 ";// (注意,这种格式也是存在的)
//http://www.abc.com/List.aspx?Pages=3&User=test

var r = /^https?:\/\/(www\.)?([^\.]+)\.abc\.com\/([^\?]+)(\?(.+))?$/i;
s = s.replace(r, "http://www.abc.com/$3?User=$2&$5 ");
alert(s)
</SCRIPT>