function parse(str) {
var result = {};
var reg = /^([a-z0-9]+):([\/]{1,3})((?:[a-z0-9\-\.]+)+\.[a-z0-9]+)(?::(\d+))?[\/]?([^?#]*)?[\?]?([^?#]*)?(?:#(.*))?$/i;
var map = reg.exec(str) ,
arr = ["url" , "scheme" , "slash" , "host" , "port" , "path" , "query" , "hash"];
for(var i = 0 , len = map.length ; i < len ; i++) {
result[arr[i]] = map[i] || "";
}
return result;
};