Comment supprimer les paramètres de chaîne de requête en JavaScript ?
P粉239164234
P粉239164234 2023-08-20 18:46:10
0
2
403

Existe-t-il un meilleur moyen de supprimer des paramètres de la chaîne de requête d'une chaîne d'URL que le JavaScript standard utilisant des expressions régulières ?

C'est ce que j'ai trouvé jusqu'à présent, et cela semble fonctionner dans mes tests, mais je n'aime pas réinventer l'analyse des chaînes de requête !

function RemoveParameterFromUrl(url, paramètre) { if (typeof paramètre == "non défini" || paramètre == null || paramètre == "") lancer une nouvelle erreur ("le paramètre est requis"); url = url.replace(new RegExp("b" + paramètre + "=[^&;]+[&;]?", "gi"), ""); // Supprime tous les déchets restants url = url.replace(/[&;]$/, ""); URL de retour ; }

P粉239164234
P粉239164234

répondre à tous (2)
P粉163465905

Les

Les navigateurs modernesfournissent l'interfaceURLSearchParamsURLSearchParams接口来处理搜索参数。该接口具有deletepour gérer les paramètres de recherche. Cette interface possède une méthodedelete, 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`) }
    P粉506963842
    "[&;]?" + parameter + "=[^&;]+"

    Cela semble dangereux car l'argument « bar » correspondrait :

    ?a=b&foobar=c

    De plus, siparametercontient 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的习惯用法 if (pars[i].lastIndexOf(prefix, 0) !== -1) { pars.splice(i, 1); } } return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : ''); } return url; }
      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!