var parse_url = /^(?:([A-Za-z]+):)?(//{0,3})([0-9./-A-Za-z]+)(?::(/d+))?(?://([^?#]*))?(?:/?([^#]*))?(?:#(.*))?$/;
var url = "http://www.baidu.com/?loehuang";
var result = parse_url.exec(url);
var names = ['url','scheme','slash','host','port','path','query','hash'];
var blanks = " ";
for(var i=0;i<names.length;i++){
document.writeln(names[i] + ":" + blanks.substring(names[i].length),result[i])
}
结果:
url: http://www.baidu.com/?loehuang
scheme: http
slash: //
host: www.baidu.com
port:
path:
query: loehuang
hash:
正则解释:
?: 表示不捕获
[A-Za-z] 表示匹配大小写字母,
[A-Za-z] + 表示可连续匹配一个以上大小写字母
([A-Za-z]+) 表示捕获括号中的匹配内容
([A-Za-z]+):)? 表示可匹配0-1次?前面内容
//{0,3} 表示可连续匹配“/”0至3个
[0-9./-A-Za-z]+ 表示连续匹配一个以上的大小写字母、0-9数字以及“.”、”/”、“-”
/d+ 表示连续匹配数字
(?::(/d+)) 表示匹配“:”和数字,不捕获外边括号的内容,捕获里边括号的内容
[^?#]* 表示连续匹配除“?”和“#”的内容