zoukankan      html  css  js  c++  java
  • 使用正則表達式对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();


  • 相关阅读:
    Unity实现Bezier曲线的移动(三点之间的Bezier曲线的移动)
    error CS2001: Source file `Assets/Pro Standard Assets/Image Based/SaveGameData.cs' could not be found 错误
    Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?) 错误
    Unity拖拽旋转2D物体
    Unity预编译
    Activity的四种launchMode
    接入华为海外SDK支付,按下home键,之后支付页面被销毁
    Android动态权限申请
    armeabi与armeabi-v7a的区别
    win7上帝模式
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7228051.html
Copyright © 2011-2022 走看看