【问题标题】:how to replace email id text before @ with * in javascript?如何在javascript中用*替换@之前的电子邮件ID文本?
【发布时间】:2018-12-17 01:59:40
【问题描述】:

我正在尝试在 react Js 中重置密码。我需要显示该电子邮件已发送到他们的电子邮件 ID。我不想显示他们的整个电子邮件,而是想用 * 替换一些字符。 例如,有人有一封电子邮件 testing@gmail.com,所以我想用 * 替换一些随机字符,即 tes***g@gmail.com。 我怎么能在javascript中做到这一点? 我的代码:

let a = testing@gmail.com
let c = a.split('@');
let b = c[0].slice(0,-3)+'***'+'@'+c[1];

但这不是有效的方法。如何有效地做??

假设如果我有 test@gmail.com 那么它应该显示 t**t@gmail.com 如果有任何@gmail.com 它应该像 a*y@gmail.com。

【问题讨论】:

  • “但这不是有效的方法。” 为什么不呢?
  • 我想从倒数第二个开始切片,而不是从最后一个切片
  • 尝试正则表达式替换
  • 我建议你举一些输入和预期输出的例子。当您说您对短名称有疑问时,您并没有告诉我们您想要发生什么。用一些电子邮件地址示例和您想要回复的内容更新问题。

标签: javascript


【解决方案1】:

使用这个:

 var input = "testing@gmail.com";

function callme(){
    var a = input.split("@"); 
    var b = a[0];
    var newstr = "";
    for(var i in b){
     if(i>2 && i<b.length-1)newstr += "*";
     else newstr += b[i];
    }
    console.log(newstr +"@"+ a[1]);
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="callme()">click me</button>

【讨论】:

  • 等到 OP 澄清他们想要什么。这不会混淆名称部分
  • 你是对的。我根据输出编写了这段代码! :)
  • 包含 jQuery 是因为...?
【解决方案2】:

你已经开始了:分成几部分并对第一部分应用一个算法来替换一些字符,然后再次加入这些位。

以下基于始终保留最后一个字符并替换至少一个前导字符的公式替换第一部分的一部分。随着字符串变长,它会替换更多的前导字符。

调整生成 startIndexendIndex 值的乘数以替换更多或更少的字符。

function mungeEmailAddress(s) {
  var i = s.indexOf('@');
  var startIndex = i * .2 | 0;
  var endIndex   = i * .9 | 0;
  return s.slice(0, startIndex) +
         s.slice(startIndex, endIndex).replace(/./g, '*') +
         s.slice(endIndex);
}

// Testing...
for (var s='', t = '@foo.com', i=97; i<110; i++) {
  s += String.fromCharCode(i);
  console.log(s + t + ' => ' + mungeEmailAddress(s + t));
}
 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2013-10-11
    • 2015-12-20
    • 2019-06-14
    • 1970-01-01
    相关资源
    最近更新 更多