亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

前端實現(xiàn)個人信息脫敏(手機號、身份證號、姓名、郵箱)JavaScript代碼示例

 更新時間:2025年02月10日 09:46:17   作者:年近古稀還要寫代碼  
這篇文章主要介紹了如何使用JavaScript對手機號、身份證號、姓名和郵箱等個人數(shù)據(jù)進行脫敏處理,以保護用戶隱私,通過正則表達式和分組捕獲,可以靈活地對不同類型的數(shù)據(jù)進行脫敏處理,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

在當今數(shù)字化時代,個人信息的安全與隱私保護已成為公眾關(guān)注的焦點。本文將通過JavaScript代碼示例,演示如何對手機號、身份證號、姓名、郵箱等個人數(shù)據(jù)進行脫敏處理。確保滿足需求的同時保護用戶的隱私。

一、手機號

手機號脫敏通常保留前三位和后四位,中間四位用星號替換。通過正則表達式匹配手機號的結(jié)構(gòu),并使用分組捕獲前三位和后四位,中間四位替換為星號。

phoneHide(phone) {
	let reg = /^(1[3-9][0-9])\d{4}(\d{4}$)/; // 定義手機號正則表達式
	phone = phone.replace(reg, '$1****$2');
	return phone;
}

使用正則表達式對手機號進行脫敏 

二、身份證號

對身份證號進行脫敏通常意味著保留身份證號的前幾位和后幾位,而將中間的部分替換為星號。

function desensitizeIDCard(idCard) {
  if (!idCard || idCard.length < 6) {
    console.error('請輸入有效的身份證號碼');
    return '';
  }

  // 中國大陸的身份證號碼長度為18位
  const idLength = 18;
  // 保留前6位和后4位,中間替換為星號
  const prefix = idCard.substr(0, 6);
  const suffix = idCard.substr(idLength - 4);
  const middle = '*'.repeat(idLength - 10);

  return prefix + middle + suffix;
}
// 示例
console.log(desensitizeIDCard('123456199001010012')); // 輸出: 123456*********0012

三、姓名

對姓名數(shù)據(jù)進行脫敏通常意味著將姓名的一部分替換為星號(*)或其他占位符,以保護個人隱私。

function desensitizeName(name, options) {
  // 默認脫敏選項
  const defaultOptions = {
    showFirstLetter: true,  // 是否顯示第一個字母
    starLength: 3           // 脫敏字符的長度
  };

  // 合并用戶選項和默認選項
  const settings = {...defaultOptions, ...options};

  // 檢查是否是中文姓名
  const isChineseName = /[\u4e00-\u9fa5]/.test(name);

  // 脫敏函數(shù)
  const desensitize = (str) => {
    const firstLetter = str[0];
    const restLength = str.length - 1;
    const stars = settings.showFirstLetter ? '*'.repeat(restLength) : '*'.repeat(str.length);
    return firstLetter + stars;
  };

  if (isChineseName) {
    // 假設(shè)中文姓名由兩個或三個字組成
    return desensitize(name);
  } else {
    // 英文姓名可能由多個單詞組成
    const parts = name.split(' ');
    const desensitizedParts = parts.map(part => desensitize(part));
    return desensitizedParts.join(' ');
  }
}

// 示例
console.log(desensitizeName('張三', { showFirstLetter: true, starLength: 2 })); // 輸出: 張**
console.log(desensitizeName('李四', { showFirstLetter: false })); // 輸出: ***
console.log(desensitizeName('John Doe', { showFirstLetter: true, starLength: 2 })); // 輸出: J*** D**

  此函數(shù)接受一個姓名字符串和一個選項對象。選項對象可以包含兩個屬性:showFirstLetter決定是否顯示姓名的第一個字母,starLength決定脫敏后顯示的星號數(shù)量。函數(shù)會根據(jù)這些選項對中文或英文姓名進行脫敏處理。

  請注意,這個函數(shù)假設(shè)中文姓名由兩個或三個漢字組成,而英文姓名由空格分隔的多個單詞組成。如果姓名結(jié)構(gòu)更復雜,可能需要進一步定制函數(shù)以適應不同的脫敏需求。

四、郵箱

對郵箱進行脫敏通常意味著保留郵箱的第一部分(即用戶名部分)和域名部分,而將用戶名的中間部分替換為星號(*)。

function desensitizeEmail(email) {
  if (!email || !email.includes('@')) {
    console.error('請輸入有效的郵箱地址');
    return '';
  }

  // 分離郵箱的用戶名部分和域名部分
  const [username, domain] = email.split('@');
  // 確定用戶名部分脫敏后的長度,這里保留前后各2個字符
  const visibleLength = 2;
  // 如果用戶名長度小于或等于保留長度,則不進行脫敏
  if (username.length <= visibleLength * 2) {
    return email;
  }

  // 脫敏用戶名部分,中間用星號替換
  const visibleUsername = username.substring(0, visibleLength) + '*'.repeat(username.length - visibleLength * 2) + username.substring(username.length - visibleLength);
  // 重新組合脫敏后的郵箱
  return visibleUsername + '@' + domain;
}

// 示例
console.log(desensitizeEmail('example@email.com')); // 輸出: e*****m@email.com
console.log(desensitizeEmail('user123@domain.com')); // 輸出: u*****3@domain.com
console.log(desensitizeEmail('test@website.org')); // 輸出: t****e@website.org

  此函數(shù)接受一個郵箱字符串作為參數(shù),首先檢查輸入是否有效(即是否包含@符號)。然后,它將郵箱地址分割為用戶名部分和域名部分。如果用戶名部分的長度小于或等于保留長度(在這個例子中是前后各2個字符),則不會進行脫敏。否則,它將用戶名的中間部分替換為星號。

  請注意,這個函數(shù)默認保留了前后各2個字符,但你可以根據(jù)需要調(diào)整visibleLength的值。此外,如果郵箱地址很短,函數(shù)會直接返回原郵箱地址,不進行脫敏。

總結(jié)

到此這篇關(guān)于前端實現(xiàn)個人信息脫敏(手機號、身份證號、姓名、郵箱)的文章就介紹到這了,更多相關(guān)前端個人信息脫敏內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論