参考博文:【基础进阶】URL详解与URL编码
一、URI vs URL
URI:(Uniform Resource Identifier 统一资源标识符)。
URL:(Uniform/Universal Resource Locator 统一资源定位符)。
关系:
二、URL
基本格式
protocol://hostname[:port]/pathname[;url-params][?search][#hash]
protocol
访问
用于...
http
超文本传输协议
以 开头的普通网页。不加密。
https
安全超文本传输协议
安全网页,加密所有信息交换。
ftp
文件传输协议
用于将文件下载或上传至网站。
file
您计算机上的文件。
(host=hostname+port)
3. 例子:
;id=8079?name=sviergn&x=true#stuff
Schema: http
host.domain:
path: /sj/test
URL params: id=8079
Query String: name=sviergn&x=true
Anchor: stuff
三、解析URL
),再加上一些正则(见正则表达式)
function parseURL(url) { a = document.createElement('a'); a.href = url; { source: url, protocol: a.protocol.replace(':',''), hostname: a.hostname, port: a.port, pathname: a.pathname, segments: a.pathname.replace(/^\//,'').split('http://www.cnblogs.com/'),//先把pathname开头的/去掉,再把剩余的根据/进行分割 file: (a.pathname.match(/([^/?#]+)$/i) || [,''])[1],//若pathname末尾包含不带/?#的捕获组,则其为filename;否则,filename为空字符串 search: a.search, params: (function(){ var ret = {}; var seg = a.search.replace(/^\?/,'').split('&'); var len = seg.length; for (var i = 0;i<len;i++) { if (!seg[i]) { continue; } var s = seg[i].split('='); ret[s[0]] = s[1]; } return ret; })(), hash: a.hash.replace('#','') }; }
使用方法:
var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&m=hello#top'); myURL.source; // 'http://abc.com:8080/dir/index.html?id=255&m=hello#top' myURL.protocol; // 'http' myURL.hostname; // 'abc.com' myURL.port; // '8080' myURL.pathname; // '/dir/index.html' myURL.segments; // Array = ['dir', 'index.html'] myURL.file; // 'index.html' myURL.search; // '?id=255&m=hello' myURL.params; // Object = { id: 255, m: hello } myURL.hash; // 'top'