对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();

使用正則表達式对URL进行解析的更多相关文章

  1. Java正則表達式入门

     众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一 ...

  2. Perl入门(四)Perl的正則表達式

    正則表達式是Perl语言的特色.主要的语法不是非常难,可是编写一个符合需求.高效的正則表達式.还是有一些挑战的. Perl的三种匹配模式 1.查找 语法:m/正則表達式内容/; 作用:查找匹配内容中是 ...

  3. 经常使用的正則表達式归纳—JavaScript正則表達式

    来源:http://www.ido321.com/856.html 1.正则优先级 首先看一下正則表達式的优先级,下表从最高优先级到最低优先级列出各种正則表達式操作符的优先权顺序: 2.经常使用的正則 ...

  4. iOS_正則表達式

    iOS 正則表達式 正則表達式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE).计算机科学的一个概念. 正則表達式使用单个字符 ...

  5. 网页抓取信息(php正則表達式、php操作excel)

    1.问题描写叙述 实现对固定网页上自己须要的信息抓取,以表格形式存储. 我是拿wustoj上的一个排行榜来练习的,地址:wustoj 2.思路 网页自己就简单学习了一下php,刚好用它来做点事情吧,我 ...

  6. jQuery源代码学习:经常使用正則表達式

    转载自:http://nuysoft.iteye.com/blog/1217898 经常使用的数字正则(严格匹配) 正则 含义 ^[1-9]\d*$ 匹配正整数 ^-[1-9]\d*$ 匹配负整数 ^ ...

  7. PHP经常使用正則表達式汇总

    1.    平时做站点常常要用正則表達式,以下是一些解说和样例,仅供大家參考和改动使用:  2.    "^\d+$" //非负整数(正整数 + 0)  3.    "^ ...

  8. php正則表達式中的非贪婪模式匹配的使用

    php正則表達式中的非贪婪模式匹配的使用 通常我们会这么写: $str = "http://www.baidu/.com? url=www.sina.com/"; preg_mat ...

  9. php中的字符串和正則表達式

    一.字符串类型的特点 1.PHP是弱类型语言,其它数据类型一般都能够直接应用于字符串函数操作. 1: <? php 2: echo substr("123456",2,4); ...

随机推荐

  1. ora flashback详解

    使用oracle数据库时,难免会碰到一些问题. 例:1.如何回滚已经commit了的数据 2.如何查询已经被覆盖掉的数据[update],或者被delete了的数据 3.如何将数据恢复到某个时间点 我 ...

  2. java异常处理及400,404,500错误处理

        java代码中经常碰到各种需要处理异常的时候,比如什么IOException  SQLException  NullPointException等等,在开发web项目中,遇到异常,我现在做的就 ...

  3. hibernate基础工具findBySQL学习

    public List<Map<String,Object>> findBySQL(String sql,Map<String,Object> param,int ...

  4. 【bzoj1690】[Usaco2007 Dec]奶牛的旅行 分数规划+Spfa

    题目描述 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的城市地图,上面标 ...

  5. BZOJ 4816 [Sdoi2017]数字表格 ——莫比乌斯反演

    大力反演出奇迹. 然后xjb维护. 毕竟T1 #include <map> #include <ctime> #include <cmath> #include & ...

  6. [解决方案][错误代码:0x80070002]IIS7及以上伪静态报错404

    故障现象:DTCMS开启伪静态功能,VS2010预览正常,发布到IIS后报错404.0错误 (WIN7,WIN8,SERVER2008).模块IISWebCore通知MapRequestHandler ...

  7. 学习 WebService 第三步:一个简单的实例(RAD+WAS 8.5开发SOAP项目)

    [开发环境] Web Service 服务器端开发工具:RAD(Eclipse内核) Web Service 服务器:IBM WebSphere v8.5 REST/SOAP:SOAP(JAX-WS/ ...

  8. 标准C程序设计七---116

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  9. 變更 cut-off,termination current,截止電流 對 battery capacity 的影響

    依之前的經驗 2700mAh 電池 cut-off 由 128 降至 64 mA,充電時間延長 20 分鐘, (128 + 64)/2 = 96 取平均充電流, 96 * (20/60) = 32 m ...

  10. 编译 Android 版本的 Opus 音频编解码库的方法

    Opus 音频编解码库是 Speex 音频编解码库的下一代版本,从编解码性能以及质量上来讲都有了长足的进步.Opus 的编译非常简单,但是官方并未给出详细的 Android 版本编译指南,查找了大量资 ...