Skip to content

Instantly share code, notes, and snippets.

@levenokk
Created March 14, 2020 11:50
Show Gist options
  • Save levenokk/b900b8414c35ef88278d6e6bced8b597 to your computer and use it in GitHub Desktop.
Save levenokk/b900b8414c35ef88278d6e6bced8b597 to your computer and use it in GitHub Desktop.
function getUrlParameter(url, parameter) {
parameter = parameter.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
var regex = new RegExp('[\\?|&]' + parameter.toLowerCase() + '=([^&#]*)');
var results = regex.exec('?' + url.toLowerCase().split('?')[1]);
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
}
function setUrlParameter(url, key, value) {
var baseUrl = url.split('?')[0],
urlQueryString = '?' + url.split('?')[1],
newParam = key + '=' + value,
params = '?' + newParam;
// If the "search" string exists, then build params from it
if (urlQueryString) {
var updateRegex = new RegExp('([\?&])' + key + '[^&]*');
var removeRegex = new RegExp('([\?&])' + key + '=[^&;]+[&;]?');
if (typeof value === 'undefined' || value === null || value === '') { // Remove param if value is empty
params = urlQueryString.replace(removeRegex, "$1");
params = params.replace(/[&;]$/, "");
} else if (urlQueryString.match(updateRegex) !== null) { // If param exists already, update it
params = urlQueryString.replace(updateRegex, "$1" + newParam);
} else { // Otherwise, add it to end of query string
params = urlQueryString + '&' + newParam;
}
}
// no parameter was set so we don't need the question mark
params = params === '?' ? '' : params;
return baseUrl + params;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment