您的位置:首页 > 其它

正则表达式完美解析URL中的各部分

2017-03-15 14:33 197 查看
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+)) 表示匹配“:”和数字,不捕获外边括号的内容,捕获里边括号的内容

[^?#]* 表示连续匹配除“?”和“#”的内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: