使用正則表達式对URL进行解析

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

1、协议 如http,https

2、域名或IP

3、port号,如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();


原文地址:https://www.cnblogs.com/brucemengbm/p/7228051.html