Les
Les navigateurs modernes fournissent l'interface URLSearchParams
URLSearchParams
接口來處理搜索參數(shù)。該接口具有delete
pour gérer les paramètres de recherche. Cette interface possède une méthode delete
, qui peut supprimer les paramètres par nom.
if (typeof URLSearchParams !== 'undefined') { const params = new URLSearchParams('param1=1¶m2=2¶m3=3') console.log(params.toString()) params.delete('param2') console.log(params.toString()) } else { console.log(`您的瀏覽器 ${navigator.appVersion} 不支持URLSearchParams`) }
"[&;]?" + parameter + "=[^&;]+"
Cela semble dangereux car l'argument ? bar ? correspondrait?:
?a=b&foobar=c
De plus, si parameter
contient des caractères ayant une signification particulière dans les expressions régulières, tels que ? . ?, cette expression régulière échouera. Et ce n'est pas une expression régulière globale, donc une seule instance du paramètre sera supprimée.
Je n'utiliserais pas une simple expression régulière pour faire cela, j'analyserais les paramètres et supprimerais ceux dont je n'ai pas besoin.
function removeURLParameter(url, parameter) { //如果你有一個location/link對象,最好使用l.search var urlparts = url.split('?'); if (urlparts.length >= 2) { var prefix = encodeURIComponent(parameter) + '='; var pars = urlparts[1].split(/[&;]/g); //反向迭代可能會破壞性 for (var i = pars.length; i-- > 0;) { //字符串.startsWith的習(xí)慣用法 if (pars[i].lastIndexOf(prefix, 0) !== -1) { pars.splice(i, 1); } } return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : ''); } return url; }