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> |
号