用Javascript正则实现url链接的解析类

用 Javascript 解析链接(URL)是一个常见的需求,本文介绍了一个非常健全的用 Javascript 写的链接(URL)解析类,他可以准确获取一个完整的 URL 中每个部分的内容,包括协议、URL中包含的用户名和密码、主机名、端口、路径名、参数、锚点(Fragment Anchor)等信息。

if (typeof Poly9 == 'undefined')
{
var Poly9 = {};
}
Poly9.URLParser = function(url) {

this._fields = {
'Username' : 4,
'Password' : 5,
'Port' : 7,
'Protocol' : 2,
'Host' : 6,
'Pathname' : 8,
'URL' : 0,
'Querystring' : 9,
'Fragment' : 10
};

this._values = {};
this._regex = null;
this.version = 0.1;
this._regex = /^((\w+):\/\/)?((\w+):?(\w+)?@)?([^\/\?:]+):?(\d+)?(\/?[^\?#]+)?\??([^#]+)?#?(\w*)/;
for(var f in this._fields)
{
this['get' + f] = this._makeGetter(f);
}

if (typeof url != 'undefined')
{
this._parse(url);
}
}
Poly9.URLParser.prototype.setURL = function(url) {
this._parse(url);
}

Poly9.URLParser.prototype._initValues = function() {
for(var f in this._fields)
{
this._values[f] = '';
}
}

Poly9.URLParser.prototype._parse = function(url) {
this._initValues();
var r = this._regex.exec(url);
if (!r) throw "DPURLParser::_parse -> Invalid URL";

for(var f in this._fields) if (typeof r[this._fields[f]] != 'undefined')
{
this._values[f] = r[this._fields[f]];
}
}
Poly9.URLParser.prototype._makeGetter = function(field) {
return function() {
return this._values[field];
}
}
var url = 'http://user:password@www.jb51.net:1234/test/test.asp?id=1#test';
var p = new Poly9.URLParser(url);
document.write("URL: " + url + "

");
document.write("解析结果如下:

");
document.write("协议: " + p.getProtocol() + "
");
document.write("用户: " + p.getUsername() + "
");
document.write("密码: " + p.getPassword() + "
");
document.write("主机: " + p.getHost() + "
");
document.write("端口: " + p.getPort() + "
");
document.write("路径: " + p.getPathname() + "
");
document.write("查询字符串: " + p.getQuerystring() + "
");
document.write("锚点: " + p.getFragment() + "
");

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • javascript 解析url的search方法

    复制代码 代码如下: function searchParse(){ var resultObj = {}; var search = window.location.search; if(search && search.length > 1){ var search = search.substring(1); var items = search.split('&'); for(var index = 0 ; index < items.length ; inde

  • 一个非常全面的javascript URL解析函数和分段URL解析方法

    一.URL解析函数 复制代码 代码如下: <script>  /** *@param {string} url 完整的URL地址 *@returns {object} 自定义的对象 *@description 用法示例:var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&m=hello#top'); myURL.file='index.html' myURL.hash= 'top' myURL.host= 'a

  • JavaScript解析URL参数示例代码

    创建一个Js类: 复制代码 代码如下: var Request = { QueryString: function (item) { var svalue = location.search.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)", "i")); return svalue ? svalue[1] : svalue; } } 引用方法:isaudit = Re

  • 一个JavaScript函数把URL参数解析成Json对象

    问题:请编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象. eg:var obj=parseQueryString(url); 创建对象的三种形式: 一: var Person=new Object(); Person.name="Sun"; Person.age=24; 二: var Person=new Object(); Person["name"]="Sun"; Person[&quo

  • Javascript解析URL方法详解

    URL : 统一资源定位符 (Uniform Resource Locator, URL) 完整的URL由这几个部分构成: scheme://host:port/path?query#fragment scheme  = 通信协议 (常用的http,ftp,maito等) host = 主机 (域名或IP) port = 端口号 path = 路径 query = 查询 可选,用于给动态网页(如使用CGI.ISAPI.PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数

  • 用Javascript正则实现url链接的解析类

    用 Javascript 解析链接(URL)是一个常见的需求,本文介绍了一个非常健全的用 Javascript 写的链接(URL)解析类,他可以准确获取一个完整的 URL 中每个部分的内容,包括协议.URL中包含的用户名和密码.主机名.端口.路径名.参数.锚点(Fragment Anchor)等信息. if (typeof Poly9 == 'undefined') { var Poly9 = {}; } Poly9.URLParser = function(url) { this._field

  • JavaScript获取当前url路径过程解析

    这篇文章主要介绍了JavaScript获取当前url路径过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.假设当前页完整地址是:http://localhost:61768/Home/Index?id=2&age=18 //获取当前窗口的Url var url = window.location.href; //结果:http://localhost:61768/Home/Index?id=2&age=18 //获取当前窗口的主

  • JavaScript判断一个URL链接是否有效的实现方法

    引言 有一个通讯录系统, 同时部署在几台服务器上, 但是主页上有个通讯录的链接, 链接到这个系统. 问题是, 有时候链接指向的服务器出故障, 于是希望在这个服务器出故障(服务不可用)的情况下, 能指向其他服务器的链接. 解决方案一: XMLHTTP方案 以下代码摘自[2]中meizz的回帖: 复制代码 代码如下: <script language= "javascript"> function getURL(url) { var xmlhttp = new ActiveXO

  • Python Django框架url反向解析实现动态生成对应的url链接示例

    本文实例讲述了Python Django框架url反向解析实现动态生成对应的url链接.分享给大家供大家参考,具体如下: url反向解析:根据url路由规则,动态生成对应的url链接 (防止硬编码). url反向解析应用在两个地方:模板中的超链接,视图中的重定向. 项目名/urls.py(项目的url路由配置,url反向解析,取namespace名字): from django.conf.urls import include, url from django.contrib import ad

  • JavaScript 正则应用详解【模式、欲查、反向引用等】

    本文实例讲述了JavaScript 正则应用.分享给大家供大家参考,具体如下: 正则应用 正则表达式在web开发中的常用 邮箱验证 用户名验证 替换字符串某一部分 信息采集,用来分析有效代码段 ... 有规律的字符串描述 正则表达式是一门独立的知识,同样的一段描述,比如,对于email的匹配表达式,在不同的语言是一样的,但是调用的函数不同. 正则表达式--规则表达式 正则表达式:正则表达式 正则表达式语法:正则表达式语法 正则表达式语言:正则表达式语言 准备性的工作 在js中,如何写正则表达式.

  • 原生JS获取URL链接参数的几种常见方法

    前言 作为一个前端开发,我们很多时候都需要对URL进行操作和处理,最常见的一种就是获取URL链接中携带的参数值了.使用框架开发的小伙伴可能会觉得这很简单,因为框架提供了很多方法让我们方便的获取URL链接携带的参数.但是有些时候我们不能依赖框架,需要我们使用原生JS去获取参数,这也是面试中经常遇到的一道题.今天我们就手撕代码,利用原生JS去获取URL链接参数值. 1. 获取方式总结 利用原生JS获取URL链接参数的方法也有好几种,今天我们依次来讲解常见的几种: 通过正则匹配的方式 利用a标签内置方

  • JavaScript正则方法replace实现搜索关键字高亮显示

    前言 正则表达式是字符串处理工具中强有力的工具.也有人认为这只是一个小玩具,但不管怎么说都离不开它. 这里介绍的是JavaScript的正则表达式的replace方法 ,和实现搜索关键字高亮的功能. 先介绍一下正则表达式的replace方法 replace介绍 w3school原文链接介绍 正则表达式如何使用特殊字符$来表示原来的文本,这是实现搜索高亮的关键, var str = "asad sad 123 sd qwe21"; str.replace(/\d+/img,"数

  • JavaScript自动点击链接 防止绕过浏览器访问的方法

    做支付宝帐号登录,需要做一个效果,就是打开链接页面的时候,不需要点击链接,直接跳到支付宝登录页面.也就是说,需要做一个自动点击链接的效果. 基本都是用这个: <body onLoad="autoclick('auto')"> <a id='auto' href=".$url."><img border='0' src='images/alipaylog.gif' /></a> </body> <scr

  • JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)

    本文实例讲述了JS正则匹配URL网址的方法.分享给大家供大家参考,具体如下: 最强的匹配网址-url的正则表达式:匹配www,http开头的一切网址 直接插入正则表达式: [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.? 完整的js方法: function isURL(domain) { var name = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z

  • JSP对URL链接中的中文乱码处理方法总结

    IE缺省对URL后面的参数是不编码发送的,但是Tomat缺省是按ISO8859-1来进行URL编码的,因此才会出错. 方法一: 对URL链接进行二次编码: <a onclick="javascript:window.open(encodeURI(encodeURI('./DispatchAction.do?efFormEname=FKRY0001&code_type=中文参数')))">测试</a> 或者单独对参数进行二次编码: var code_typ

随机推荐