猿问

查询参数以去除包含@ 和的值

示例网址:https : //www.example.com/ ? test=123&abc=test@gmail.com&xyz=1233 预期输出:https : //www.example.com/? test = 123 & xyz =1233


基本上,我试图去除容器电子邮件 ID 的查询参数。


这是我写的:


    var url = parent.window.location.href.replace('%40', '@').replace('&', '&');

  if (url.includes('@') && url.includes('.')) {

    var returnurl = '';

    var urlParams = new URLSearchParams(url.substring(url.indexOf('?')));

    var keys = urlParams.keys();

    var entries = urlParams.entries();

    for (pair of entries) {

      if (!(pair[1].includes('@') && pair[1].includes('.'))) {

        if (returnurl != '') {

          returnurl = returnurl + '&' + pair[0] + '=' + pair[1];

        } else {

          returnurl = pair[0] + '=' + pair[1];

        }

      } else {

        url = url.replace(pair[0] + '=' + pair[1], '')

      }

    }

  }

url = url.replace('&&','&');

有没有更好的方法来管理这个?我希望用纯 javascript 编写它,因此需要删除 ECMASCRIPT6 相关代码(上面示例中的 for 循环)。


jeck猫
浏览 152回答 2
2回答

缥缈止盈

var url = "https://www.example.com/?test=123&abc=test@gmail.com&xyz=1233"var path = url.split('?')[0];var qp = url.split('?')[1];qp = qp.split('&').filter(function(param) { return param.indexOf('@') === -1} ).join('&');var result = path+'?'+qp;console.log(result);

江户川乱折腾

您可以使用URL构造函数,URLSearchParams使用它的forEach方法迭代实例,并删除@值中带有符号的键,然后将 URL 转换回字符串:function stripEmail(urlStr) {  var url = new URL(urlStr);    url.searchParams.forEach(function(value, key) {    if(value.includes('@')) url.searchParams.delete(key);  });    return url.toString();}var url = 'https://www.example.com/?test=123&abc=test@gmail.com&xyz=1233';var result = stripEmail(url);console.log(result);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答