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