Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ซ่อนอีเมลด้วย Masking ใน JavaScript

Email Masking คืออะไร

การซ่อนส่วนหนึ่งของอีเมลเพื่อความเป็นส่วนตัว เช่น แสดงแค่ตัวแรกและตัวสุดท้ายของชื่อ แล้วแทนกลางด้วยจุด

ตัวอย่าง

const email = 'ramkumar@example.com';
// ผลลัพธ์: 'r...r@example.com'

โค้ดตัวอย่าง

const email = 'ramkumar@example.com';

const maskEmail = (email = '') => {
  const [name, domain] = email.split('@');
  const { length: len } = name;
  
  // ตัวแรก + ... + ตัวสุดท้าย
  const maskedName = name[0] + '...' + name[len - 1];
  const maskedEmail = maskedName + '@' + domain;
  
  return maskedEmail;
};

console.log(maskEmail(email));

ผลลัพธ์

r...r@example.com

เวอร์ชันปรับปรุง (รองรับกรณีขอบ)

const maskEmailAdvanced = (email, maskChar = '*', visibleStart = 1, visibleEnd = 1) => {
  const [local, domain] = email.split('@');
  if (!domain) return email; // ไม่ใช่อีเมลที่ถูกต้อง
  
  if (local.length <= visibleStart + visibleEnd) {
    return local + '@' + domain; // สั้นเกินไป ไม่ mask
  }
  
  const start = local.slice(0, visibleStart);
  const end = local.slice(-visibleEnd);
  const masked = maskChar.repeat(local.length - visibleStart - visibleEnd);
  
  return start + masked + end + '@' + domain;
};

// ทดสอบ
console.log(maskEmailAdvanced('ramkumar@example.com'));       // r*****ar@example.com
console.log(maskEmailAdvanced('a@example.com'));              // a@example.com (สั้นเกินไป)
console.log(maskEmailAdvanced('ab@example.com', '#', 1, 1));  // a#b@example.com
console.log(maskEmailAdvanced('john.doe@company.org', 'x', 2, 2)); // joxxxxoe@company.org

Mask Domain ด้วย (Optional)

const maskFullEmail = (email) => {
  const [local, domain] = email.split('@');
  const [domainName, tld] = domain.split('.');
  
  const maskLocal = local[0] + '*'.repeat(local.length - 2) + local.slice(-1);
  const maskDomain = domainName[0] + '*'.repeat(domainName.length - 1);
  
  return `${maskLocal}@${maskDomain}.${tld}`;
};

console.log(maskFullEmail('ramkumar@example.com')); // r******r@e******e.com

สรุป

  • ฟังก์ชันพื้นฐานทำงานได้ดีสำหรับอีเมลทั่วไป
  • ควรเพิ่ม validation และรองรับกรณีขอบ (ชื่อสั้น, ไม่มี @, ฯลฯ)
  • สามารถปรับจำนวนตัวอักษรที่แสดงได้ตามนโยบายความปลอดภัย