Javascript 查找并替换字符jquery之前的所有内容

Javascript 查找并替换字符jquery之前的所有内容,javascript,jquery,Javascript,Jquery,我必须在站点端显示客户信息,因为我也在显示电子邮件和其他信息 在这里,我必须用*like替换@之前的所有字符 test@gmail.com 这是我希望结果为的示例邮件id ****@gmail.com 我试过下面一个,只有@替换为* $('.element span')。每个(函数(){ console.log($(this.text()); var text=$(this.text().replace('@','*'); $(此).text(文本); }); test@gmail.co

我必须在站点端显示客户信息,因为我也在显示电子邮件和其他信息

在这里,我必须用*like替换@之前的所有字符

test@gmail.com
这是我希望结果为的示例邮件id

****@gmail.com
我试过下面一个,只有@替换为*

$('.element span')。每个(函数(){
console.log($(this.text());
var text=$(this.text().replace('@','*');
$(此).text(文本);
});

test@gmail.com
可能的解决方案

$('.element span')。每个(函数(){
$(this).text($(this).text().replace(/。+(?=@)/g,'*')。重复($(this.text().replace(/。+/g,).length));
});

test@gmail.com
somethingelse@gmail.com

另一种可能的解决方案,没有正则表达式:

document.querySelectorAll('p').forEach(函数(el){
var text=el.innerText;
var substr=text.substr(0,text.lastIndexOf('@');
el.innerText=text.replace(substr,'*'。repeat(substr.length));
});
testa@gmail.com

testb@gmail.com

testc@anymail.com


testwithmoreasterisks@gmail.com

尝试将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);
    });
});
$(函数(){
$('.element span')。每个(函数(){
var index=$(this.text().indexOf(“@”);
var substring=$(this).text().substr(0,索引);
var otherpart=$(this.text().substr(index);
对于(变量i=0,len=substring.length;i
让我知道它是否有效。

请尝试下面的代码

`<!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>`
`
维奈。mbkumar@gmail.com
函数替换范围(s、开始、结束、替换){
返回s.substring(0,开始)+替换+s.substring(结束);
}
$('.element span')。每个(函数(){
var str=$(this.text();
console.log(str);
console.log(str.length)
var i=0;
var-ind=0;
var text=“”;
var repchar=“”;
而(i
这也是一个解决方案

var strArray=(“test@gmail.com)拆分(“@”);
var str=strArray[0]。替换(/。/gi,'*');

str=str+“@”+strArray[1]

这是出于安全目的吗?我想你意识到这是非常低的安全性?我必须同意@mayersdesign你仍然会发送完整的电子邮件地址,任何人都需要做的就是打开他们的网络标签…或者禁用javascript并点击F5@mayersdesign如果是正确的,用户可以轻松查看页面的源代码,而无需运行JS,如果您使用AJAX,他们可以通过开发人员工具查看服务器的结果。您需要在服务器上执行此操作side@AlonEitan为了显示目的,他可以这样做(替换为****),但如果他是通过ajax发送邮件id,则不发送邮件id,而是发送用户id,然后获取他的邮件id。这是唯一可能的。