28 EKİM 2009, ÇARŞAMBA
Nasıl JavaScript sorgu dizesi bir parametre silebilir miyim?
Standart JavaScript URL bir dize içinde bir sorgu dize düzenli ifade kullanarak başka bir parametre silmek için daha iyi bir yolu var mı?
Burada benim testlerde iş gibi görünüyor buraya kadar geldim, ama sorgu dizesi ayrıştırma yeniden icat etmek istemiyorum!
function RemoveParameterFromUrl( url, parameter ) {
if( typeof parameter == "undefined" || parameter == null || parameter == "" ) throw new Error( "parameter is required" );
url = url.replace( new RegExp( "\\b" parameter "=[^&;] [&;]?", "gi" ), "" ); "$1" );
// remove any leftover crud
url = url.replace( /[&;]$/, "" );
return url;
}
CEVAP
28 EKİM 2009, ÇARŞAMBA
"[&;]?" parameter "=[^&;] "
Bu parametre, çünkü tehlikeli görünüyor ‘’ maç olur: . bar
?a=b&foobar=c
Ayrıca eğer parameter
RegExp özel olan tüm karakterler gibi içeriyorsa başarısız olurdu ‘.’. Ve tek parametre bir örneği kaldırmak istiyorsunuz yani küresel bir düzenli ifade değil.
Bunun için basit bir RegExp kullanmak istemem, parametreleri ayrıştırmak ve istemediğiniz olanları kaybederim.
function removeURLParameter(url, parameter) {
//prefer to use l.search if you have a location/link object
var urlparts= url.split('?');
if (urlparts.length>=2) {
var prefix= encodeURIComponent(parameter) '=';
var pars= urlparts[1].split(/[&;]/g);
//reverse iteration as may be destructive
for (var i= pars.length; i-- > 0;) {
//idiom for string.startsWith
if (pars[i].lastIndexOf(prefix, 0) !== -1) {
pars.splice(i, 1);
}
}
url= urlparts[0] '?' pars.join('&');
return url;
} else {
return url;
}
}
Bunu Paylaş:
Nasıl Javascript ile sorgu dizesi oluş...
Nasıl ASP.NET c kullanarak sorgu dizes...
Nasıl bir sorgu dizesi parametre geçme...
Nasıl iki JavaScript nesnelerin özelli...
Nasıl JavaScript para olarak format nu...