首页 > 代码库 > 使用正则表达式对URL进行解析

使用正则表达式对URL进行解析

对URL进行解析,一般用到的参数有:

1、协议 如http,https

2、域名或IP

3、端口号,如7001,8080

4、Web上下文

5、URI,请求资源地址

6、请求参数

一个URL示例:

http://i0.sinaimg.cn:8080/blog/register.jsp?type=a&name=test1234


这里只对前5个参数进行匹配解析:


	//使用字符索引对URL进行解析
	function parseURL(url){
		//解析协议
		var protocal = url.substring(0, url.indexOf(':'));
		//alert('protocal:' + protocal);
		
		//解析域名和端口
		var tmp = url.substr(url.indexOf('//') + 2);
		
		var domain = tmp.substr(0, tmp.indexOf("/"));
		//alert('domain:' + domain);
		
		var domainName,port;
		var idx = domain.indexOf(":");
		
		if(idx>0){
			domainName = domain.substr(0,idx);
			port = domain.substr(idx + 1);
		} else{
			domainName = domain;
		}
	
		//alert('domainName:' + domainName + ',' + port);
		
		//解析web context
		var tmp2 = tmp.substr(tmp.indexOf("/") + 1);	
		var webContext = tmp2.substr(0,tmp2.indexOf('/'));
		//alert('webContext:' +webContext);
		
		//解析URI
		var uri = tmp2.substr(tmp2.indexOf('/'));
		//alert('uri:' + uri);
		
		return {
			protocal: protocal,
			domainName:domainName,
			port: port,
			webContext: webContext,
			uri: uri
		}
	}
	
	function testParseUrl(){
		var url = "http://ppp.com:8090/mximprove/mxt/scripts/views/MainViewController.js";
		var urlObj = parseURL(url);
		document.writeln('<br>' + urlObj.protocal);
		document.writeln('<br>' + urlObj.domainName);
		document.writeln('<br>' + urlObj.port);
		document.writeln('<br>' + urlObj.webContext);
		document.writeln('<br>' + urlObj.uri);		
	}	
		
		
	//testParseUrl();
	
//----------------------------------------------------------------------------------------------------------------
	
	//使用正则表达式对URL进行解析
	function parseUrl(url){		
		var reg = /^(\w+):\/\/([^\/:]*)(?::(\d+))?\/(.*)/
		reg.exec(url);
		
		alert(RegExp.$1 + ',' + RegExp.$2 + ',' + RegExp.$3 + ',' + RegExp.$4+ ',' + RegExp.$5);
	}


	function parseUrl2(url){		
		var reg = /^(\w+):\/\/([^\/:]*)(?::(\d+))?\/([^\/]*)(\/.*)/
		reg.exec(url);
		
		alert(RegExp.$1 + ',' + RegExp.$2 + ',' + RegExp.$3 + ',' + RegExp.$4+ ',' + RegExp.$5);
	}

	
	function testParseUrl(){
		var url = "http://ppp.com:8090/mximprove/mxt/scripts/views/MainViewController.js";
	
		parseUrl2(url);
		
		var url2 = "http://ppp.com/mximprove/mxt/scripts/views/MainViewController.js";
		
		parseUrl2(url2);
	
	}
	
	//testParseUrl();
	

使用正则表达式对URL进行解析