網站搜尋

javascript - 使用星號隱藏文字


我正在嘗試隱藏使用者輸入的一種類型的字串資料,然後透過 Angular 的資料綁定在另一個元件中顯示它,而我想要的是用星號來遮蔽/隱藏這部分資料。我該怎麼做呢?我對 JavaScript 不是很熟悉,有可能用 CSS 來做嗎?

            <p class="subtitle">
                Hemos enviado un correo electrónico a<br />
                <b>{{ capturedEmail }}</b> con las instrucciones<br />
                para la recuperación de tu contraseña.<br />
                Una vez reestablezcas la contraseña, podrás<br />
                ingresar a la plataforma con tus datos.
            </p>

在上面的程式碼片段中,{{ capturedEmail }} 是我想要添加該屬性的人

範例:

[email -> C***@mail.com

答案#1

你可以為它使用 Angular 管道。隨附此處的是一個 Stackblitz 範例 供你參考

<h1>{{ capturedEmail | emailAsterisk }}</h1>
@Pipe({ name: 'emailAsterisk' })
export class EmailAsteriskPipe implements PipeTransform {

  transform(value: string): string {
    return value 
      ? value.replace(/\B.+@/g, (c, ) => c.split('').slice(0, -1).map(v => '*').join('') + '@') 
      : value;
  }

}

結果

[email          >    c*****@mail.com
[email    >    j**********@gmail.com

答案#2

基本上,你試著用星號來遮住電子郵件,因此將任何電子郵件傳給以下這個方法就能解決你的問題。

試試下面的 JavaScript 代碼!

const capturedEmail = function (emailAddress, callback) {
    function mask(str) {
        var strLen = str.length;
        if (strLen > 4) {
            return str.substr(0, 1) + str.substr(1, strLen - 1).replace(/\w/g, '*') + str.substr(-1,1);
        } 
        return str.replace(/\w/g, '*');
    }
    return emailAddress.replace(/([\w.]+)@([\w.]+)(\.[\w.]+)/g, function (m, p1, p2, p3) {      
        return callback(null,mask(p1) + '@' + p2 + p3);
    });
     
}
 
capturedEmail('random string [email  test', function(err,res){
console.log(res);
});
Result: u*******[email