2017-04-24 24 views
2

我必須在網站上顯示客戶端信息,以顯示電子郵件和其他信息。找到並替換之前的所有字符jquery

在這裏,我要帶*前@代替所有的字符,例如

[email protected] 

這是在例如郵件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>[email protected]</span> 
 
</div>

我該如何做到這一點?

在此先感謝。

+3

這是出於安全的目的?我假設你意識到這是非常低的安全性? – mayersdesign

+0

我必須同意@mayersdesign你仍然會發送完整的電子郵件地址,所有人都必須打開他們的網絡選項卡。 – George

+0

...或者禁用javascript並點擊F5 – mayersdesign

回答

3

可能的解決方案。

$('.element span').each(function() { 
 
    $(this).text($(this).text().replace(/.+([email protected])/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>[email protected]</span> 
 
</div> 
 

 
<div class="element"> 
 
    <span>[email protected]</span> 
 
</div>

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); 
    }); 
}); 

讓我知道它是否有效。

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>[email protected]</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>` 
0

這也是一個解決方案

var strArray = ("[email protected]").split("@"); var str = strArray[0].replace(/./gi, '*'); str =str +"@"+ strArray[1];