如何在javascript中使用@ with *之前替换电子邮件ID文本?

how to replace email id text before @ with * in javascript?

我正在尝试在React JS中重置密码。我需要显示发送到他们电子邮件ID的电子邮件。我不想显示他们的整个电子邮件,而是用*替换一些字符。例如,有人有一封电子邮件[email protected],所以我想用*ie tes***[email protected]替换一些随机字符。我怎么能在javascript中做到这一点??我的代码:

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

但这不是一种有效的方法,如何有效地进行呢??

假设我有[email protected],那么它应该显示t**[email protected],如果有@gmail.com,它应该像一个*[email protected]


你已经开始了:分割成多个部分,在第一部分应用一个算法来替换一些字符,然后重新连接这些位。

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

调整生成startindex和endindex值的乘数,以替换更多或更少的字符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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));
}


使用此:

1
2
3
4
5
6
7
8
9
10
11
12
 var input ="[email protected]";

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]);
  }
1
2
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
<button onclick="callme()">click me</button>