使用正則表達式对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();
	
时间: 2024-11-01 12:39:28

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

JAVA学习第六十五课 — 正則表達式

正則表達式:主要应用于操作字符串.通过一些特定的符号来体现 举例: QQ号的校验 6~9位.0不得开头.必须是数字 String类中有matches方法 matches(String regex) 告知此字符串是否匹配给定的正則表達式. regex,就是给定的正則表達式 public static void checkQQ() { //第一位是数字1-9,第二位以后是0-9,除去第一位数剩下数字位数范围是5到8位 String regex = "[1-9][0-9]{5,8}";//正

Java正則表達式入门

众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一矛盾的主要手段. 大 家都知道,正則表達式是一种能够用于模式匹配和替换的规范,一个正則表達式就是由普通的字符(比如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描写叙述在查找文字主体时待匹配的一个或多个字符串.正則表達式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.  自从jdk1

正則表達式常见例题

常见例题 例1:北美地区的电话号 编码方案:电话号码有一个3位数的区号和一位7位数的号码组成(这个7位数有分成  一个3位的局号和一个4位的路号.局号和路号之间使用连字符分隔) 每位电话号码能够是随意数字,可是区号和局号的第一位数字不能是0或1.实际书写号码是往往会把区号写在括号中面,或者将区号使用连字符和后面的局号连接起来.比如:(555)123-1234或555-123-1234,有时候在括号你里面会包括空格.比如:(555 )123-1234 文本: J.Doe:248-555-1234

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

正則表達式是Perl语言的特色.主要的语法不是非常难,可是编写一个符合需求.高效的正則表達式.还是有一些挑战的. Perl的三种匹配模式 1.查找 语法:m/正則表達式内容/; 作用:查找匹配内容中是否包括"正則表達式内容",假设包括返回1,否则返回0: #!user/bin/env perl -w #1... $str1 = "i like perl"; $result1 = ($str1 =~ m/perl/); print "$result1 $st

[iOS]经常使用正則表達式

经常使用正則表達式大全!(比如:匹配中文.匹配html) 匹配中文字符的正則表達式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包含汉字在内):[^x00-xff] 评注:能够用来计算字符串的长度(一个双字节字符长度计2.ASCII字符计1) 匹配空白行的正則表達式:ns*r 评注:能够用来删除空白行 匹配HTML标记的正則表達式:<(S*? )[^>]*>.*?|<.*? /> 评注:网上流传的版本号太糟糕,上面这个

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

来源:http://www.ido321.com/856.html 1.正则优先级 首先看一下正則表達式的优先级,下表从最高优先级到最低优先级列出各种正則表達式操作符的优先权顺序: 2.经常使用的正則表達式: 匹配中文字符的正則表達式: [\u4e00-\u9fa5] 匹配双字节字符(包含汉字在内):[^\x00-\xff] 匹配空白行的正則表達式:\n\s*\r ps:能够用来删除空白行 匹配HTML标记的正則表達式:<(\S*?)[^>]*>.*?</\1>|<.*

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

1.问题描写叙述 实现对固定网页上自己须要的信息抓取,以表格形式存储. 我是拿wustoj上的一个排行榜来练习的,地址:wustoj 2.思路 网页自己就简单学习了一下php,刚好用它来做点事情吧,我的想法是这种: (1)查看网页源码并保存在文件里. (2)依据须要的信息写出正則表達式.读文件,依据正則表達式来提取须要的信息.写正則表達式的时候最好分组,这样提取起来就方便了非常多. (3)对excel操作.将提取的信息以excel的形式输出. 比較好的开源php处理excel类链接:点击打开链接

java正則表達式总结

近期用到的正則表達式 因为近期在做一个android的新闻client.多次用到了正則表達式.因此总结下. 1.使用正則表達式获取Rss资源内的文章内容的图片url 由于在每条新闻浏览的listView里须要新闻内容里的图片.因此你须要抓取文章第一张照片url地址.豆瓣的照片格式是: <img src="http://theimg.aliapp.com/img.php? url=http://img6.douban.com/view/presto/large/public/218991.j

vim中使用正則表達式

一.使用正則表達式的命令 使用正則表達式的命令最常见的就是 / (搜索)命令. 其格式例如以下: /正則表達式 还有一个非常实用的命令就是 :s(替换)命令,将第一个//之间的正則表達式替换成第二个//之间的字符串. :s/正則表達式/替换字符串/选项 在学习正則表達式时能够利用 / 命令来练习. 二.元字符 元字符是具有特殊意义的字符.使用元字符能够表达随意字符.行首.行 尾.某几个字符等意义. 元字符一览 元字符 说明 . 匹配随意一个字符 [abc] 匹配方括号里的随意一个字符. 能够使用