为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

jeck猫 2021-11-18 15:41:50
示例网址: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 循环)。
查看完整描述

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

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);


查看完整回答
反对 回复 2021-11-18
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

您可以使用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);


查看完整回答
反对 回复 2021-11-18
  • 2 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信