Created
September 27, 2012 14:52
-
-
Save simplelife7/3794444 to your computer and use it in GitHub Desktop.
【JS】正则表达式获取url的各个部分
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******************************************************************** | |
** http://www.cnblogs.com/xpnew/archive/2008/07/31/1257144.html | |
**比较通用的正则表达式,捕获url各个部分。 | |
**注意各部分基本上都包含了相应的符号,例如端口号如果捕获成功,那就是':80' | |
**函数返回一个正则表达式捕获数组。 | |
**注意,现在获得的是一个数组,所以需要通过arr[i]的方式引用。 | |
**正则表达式所有的匹配说明:: | |
**$0 | |
**整个url本身。如果$0==null,那就是我的正则有意外,未捕获的可能。 | |
**有一种未捕获的情况已经被发现,那就是域名后面没有以'/'结尾,如:'http://localhost' | |
**但是经过我的测试,IE和firefox会自动把域名后面加上'/'的。 | |
**$1-$4 协议,域名,端口号,还有最重要的路径path! | |
**$5-$7 文件名,锚点(#top),query参数(?id=55) | |
** | |
*********************************************************************/ | |
function UrlRegEx(url) | |
{ | |
//如果加上/g参数,那么只返回$0匹配。也就是说arr.length = 0 | |
var re = /(\w+):\/\/([^\:|\/]+)(\:\d*)?(.*\/)([^#|\?|\n]+)?(#.*)?(\?.*)?/i; | |
//re.exec(url); | |
var arr = url.match(re); | |
return arr; | |
} | |
//--------示例代码: | |
function getPath() | |
{ | |
return UrlRegEx(location.href)[4]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
正则存在问题,为对端口号进行判断,此种http://www.baidu.com并不匹配