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

时间:2017-04-24 11:07:17

标签: javascript jquery

我必须在网站端显示客户信息,以便显示电子邮件和其他信息。

在这里,我必须将@之前的所有字符替换为* 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;
&#13;
&#13;

我怎样才能做到这一点?

提前致谢。

5 个答案:

答案 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)

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

&#13;
&#13;
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;
&#13;
&#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];