使用正則表達式对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();
使用正則表達式对URL进行解析的更多相关文章
- Java正則表達式入门
众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一 ...
- Perl入门(四)Perl的正則表達式
正則表達式是Perl语言的特色.主要的语法不是非常难,可是编写一个符合需求.高效的正則表達式.还是有一些挑战的. Perl的三种匹配模式 1.查找 语法:m/正則表達式内容/; 作用:查找匹配内容中是 ...
- 经常使用的正則表達式归纳—JavaScript正則表達式
来源:http://www.ido321.com/856.html 1.正则优先级 首先看一下正則表達式的优先级,下表从最高优先级到最低优先级列出各种正則表達式操作符的优先权顺序: 2.经常使用的正則 ...
- iOS_正則表達式
iOS 正則表達式 正則表達式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE).计算机科学的一个概念. 正則表達式使用单个字符 ...
- 网页抓取信息(php正則表達式、php操作excel)
1.问题描写叙述 实现对固定网页上自己须要的信息抓取,以表格形式存储. 我是拿wustoj上的一个排行榜来练习的,地址:wustoj 2.思路 网页自己就简单学习了一下php,刚好用它来做点事情吧,我 ...
- jQuery源代码学习:经常使用正則表達式
转载自:http://nuysoft.iteye.com/blog/1217898 经常使用的数字正则(严格匹配) 正则 含义 ^[1-9]\d*$ 匹配正整数 ^-[1-9]\d*$ 匹配负整数 ^ ...
- PHP经常使用正則表達式汇总
1. 平时做站点常常要用正則表達式,以下是一些解说和样例,仅供大家參考和改动使用: 2. "^\d+$" //非负整数(正整数 + 0) 3. "^ ...
- php正則表達式中的非贪婪模式匹配的使用
php正則表達式中的非贪婪模式匹配的使用 通常我们会这么写: $str = "http://www.baidu/.com? url=www.sina.com/"; preg_mat ...
- php中的字符串和正則表達式
一.字符串类型的特点 1.PHP是弱类型语言,其它数据类型一般都能够直接应用于字符串函数操作. 1: <? php 2: echo substr("123456",2,4); ...
随机推荐
- 软件工程师应该关注的web攻击手段
1.SQL注入------常见的安全性问题. 解决方案:前端页面需要校验用户的输入数据(限制用户输入的类型.范围.格式.长度),不能只靠后端去校验用户数据.一来可以提高后端处理的效率,二来可以提高后端 ...
- 静态方法中不能使用 $this
忽略了一个问题,$this 代表当前对象!! 静态方法中应该使用 类名 . self 或者 static 关键字来代替! static public function get_info($id) { ...
- 常用软件URL
1.MSDN:https://msdn.itellyou.cn/ 2.软碟通(UltraISO)http://rj.baidu.com/soft/detail/11522.html?ald Ultra ...
- JDBC 学习笔记(三)—— JDBC 常用接口和类,JDBC 编程步骤
1. JDBC 常用接口和类 DriverManager 负责管理 JDBC 驱动的服务类,程序中主要的功能是获取连接数据库的 Connection 对象. Connection 代表一个数据库连接对 ...
- C++ Programming with TDD之二:CppUTest单元测试
在之前一篇C++ Programming with TDD博客中,我带给大家gmock框架的简介(地址戳着里),今天我们继续本系列,带个大家C++中的单元测试框架CppUTest的介绍. CppUTe ...
- 基于RESTful 的几种实现(就随便了解一下)
百度来的,原文未标出处,侵删. 1.1. RailsRuby on Rails是新兴的敏捷Web开发框架,在动态语言Ruby的支持下,Rails以新鲜的视角告诉我们Web开发是简单而快乐的.Rails ...
- 【THUWC2017】在美妙的数学王国中畅游(bzoj5020)
我数学是真的菜!! 清华光用数学知识就把我吊起来打,我还是太菜了 题解 如果每座城市的 $f$ 都是 $3$,维护一下树的路径上的 $\sum a,\space \sum b$ 即可. 其实就是维护一 ...
- 编写webconfig连接串与使用(新)
原文发布时间为:2008-07-27 -- 来源于本人的百度文章 [由搬家工具导入] webconfig 中<appSettings/> 得后面代码添加如下: <appSetting ...
- hdu 4932 BestCoder Round #4 1002
这题真是丧心病狂,引来今天的hack狂潮~ Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- SPI设备的驱动
主要包括两个SPI设备步骤:register_chrdevspi_register_driver关键点1:spi_board_info可以去已经运行的板子下面找例子:/sys/bus/spi/driv ...