我必须在网站端显示客户信息,以便显示电子邮件和其他信息。
在这里,我必须将@之前的所有字符替换为* like
test@gmail.com
这是我希望结果为
的示例邮件ID****@gmail.com
我试过下面只有@替换为*
$('.element span').each(function() {
console.log($(this).text());
var text = $(this).text().replace('@', '*');
$(this).text(text);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="element">
<span>test@gmail.com</span>
</div>
&#13;
我怎样才能做到这一点?
提前致谢。
答案 0 :(得分:3)
可能的解决方案。
$('.element span').each(function() {
$(this).text($(this).text().replace(/.+(?=@)/g, '*'.repeat($(this).text().replace(/@.+/g, '').length)));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="element">
<span>test@gmail.com</span>
</div>
<div class="element">
<span>somethingelse@gmail.com</span>
</div>
答案 1 :(得分:3)
另一种可能的解决方案,没有正则表达式:
document.querySelectorAll('p').forEach(function(el){
var text = el.innerText;
var substr = text.substr(0, text.lastIndexOf('@'));
el.innerText = text.replace(substr, '*'.repeat(substr.length));
});
&#13;
<p>testa@gmail.com</p>
<p>testb@gmail.com</p>
<p>testc@anymail.com</p>
<p>testwithmoreasterisks@gmail.com</p>
&#13;
答案 2 :(得分:1)
尝试将jQuery脚本更改为以下脚本:
$(function(){
$('.element span').each(function() {
var index = $(this).text().indexOf("@");
var substring = $(this).text().substr(0, index);
var otherpart = $(this).text().substr(index);
for (var i = 0, len = substring.length; i < len; i++) {
substring = substring.replace(substring[i], '*');
}
console.log(substring + otherpart);
$(this).text(substring + otherpart);
});
});
让我知道它是否有效。
答案 3 :(得分:0)
尝试以下代码。
`<!DOCTYPE html>
<head>
</head>
<body>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<div class="element">
<span>vinay.mbkumar@gmail.com</span>
</div>
<script>
function replaceRange(s, start, end, substitute) {
return s.substring(0, start) + substitute + s.substring(end);
}
$('.element span').each(function() {
var str = $(this).text();
console.log(str);
console.log(str.length)
var i = 0;
var ind = 0;
var text = "";
var repchar = "";
while (i < str.length) {
console.log(str.charAt(i));
if(str.charAt(i) == '@')
{
ind = i;
break;
}
i++;
}
console.log(ind);
for (i = 0; i < ind; i++)
{
repchar += "*";
}
text = replaceRange(str, 0, i , repchar);
console.log(text);
$(this).text(text);
});
</script>
</body>
</html>`
答案 4 :(得分:0)
这也是一个解决方案
var strArray = ("test@gmail.com").split("@");
var str = strArray[0].replace(/./gi, '*');
str =str +"@"+ strArray[1];