我試圖編寫一個函數,它將從javascript中的url中刪除查詢參數。我想我使用正則表達式,但我不知道我是否錯過了任何東西。另外,我不能動搖那種感覺,可能有更好的方法來做到這一點,這並不涉及我半天正在用正則表達式搞亂並冒着後來發現我沒有采取某種角落的風險情況考慮在內。從javascript中的URL中刪除查詢參數
remove_query_argument = function(url, arg){
var query_arg_regex;
// Remove occurences that come after '&' symbols and not the first one after the '?'
query_arg_regex = new RegExp('&' + arg + '=[^(?:&|$)]*', 'ig');
url = url.replace(query_arg_regex, '');
// remove the instance that the argument to remove is the first one
query_arg_regex = new RegExp('[?]' + arg + '[^(?:&|$)]*(&?)', 'i');
url = url.replace(query_arg_regex, function (match, capture) {
if(capture != '&'){
return '';
}else{
return '?'
}
});
return url;
}
有沒有人看到這個代碼的任何問題,或者想建議一個更好的實現或方法來解決這個問題?
謝謝!
var removeQueryFields = function (url) {
var fields = [].slice.call(arguments, 1).join('|'),
parts = url.split(new RegExp('[&?](' + fields + ')=[^&]*')),
length = parts.length - 1;
return parts[0] + '?' + (length ? parts[length].slice(1) : '');
}
一些例子:
這將是更好的地方,我認爲 - http://codereview.stackexchange.com/ – emaillenin 2012-01-01 09:14:23