Skip to content

Instantly share code, notes, and snippets.

@yuqianma
Last active April 7, 2017 07:15
Show Gist options
  • Save yuqianma/cb749f5aed92a61ebeff329fa2e36304 to your computer and use it in GitHub Desktop.
Save yuqianma/cb749f5aed92a61ebeff329fa2e36304 to your computer and use it in GitHub Desktop.
[parse url] hash search url
// parseSearch('?gws_rd=ssl')
// {gws_rd: "ssl"}
function parseSearch (str) {
str = str.split('?').pop()
var search = {}
str && str.replace(
/([^?=&]+)(=([^&]*))?/g,
function ($0, $1, $2, $3) {
search[ $1 ] = $3
}
)
return search
}
function parseHash () {
// [wholeStr, hash, search]
var strArr = window.location.hash.match(/#([^\?]*)(\?.*)?/);
var objURL = {
hash: strArr && strArr[1],
search: {}
};
strArr && strArr[2] && strArr[2].replace(
/([^?=&]+)(=([^&]*))?/g,
function ($0, $1, $2, $3) {
objURL.search[ $1 ] = $3
}
);
return objURL
}
// parseHash2('http://abc.com#new?at=32&raw')
// {hash: "new", search: {at: "32", raw: undefined}}
function parseHash2 (str) {
// [wholeStr, hash, search]
var strArr = str.match(/#([^\?]*)(\?.*)?/);
var objURL = {
hash: strArr && strArr[1],
search: {}
};
if (strArr) {
objURL.search = parseSearch(strArr[2])
}
return objURL
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment