var urlParseRE2 = /^(?:(?:(?:([^:\/#\?]+:)?(?:(?:\/\/)((?:((?:[^:@\/#\?]+)(?:\:(?:[^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((?:\/?(?:[^\/\?#]+\/+)*)(?:[^\?#]*)))?(\?[^#]+)?)(#.*)?/;
var url = "http://jblas:[email protected]:8080/mail/inbox?msg=1234&type=unread#msg-content";
var matches = urlParseRE2.exec(url);
var hostname4 = matches[5];
var search4 = matches[8];
最初讨论在https://gist.github.com/jlong/2428561 效率最高在http://jsperf.com/url-parsing/17