// 基础脱敏函数,保留首尾固定长度的字符,中间脱敏 2function desensitizeString(str, headLen = 3, tailLen = 4, maskChar = '*') { 3 if (!str || str.length <= headLen + tailLen) { 4 // 如果字符串为空或者长度小于等于保留的首尾长度之和,则直接返回原字符串或空字符串 5 return str || ''; 6 } 7 8 const maskedPartLength = str.length - headLen - tailLen; 9 10 // 创建脱敏部分的字符串 11 let maskedPart = new Array(maskedPartLength + 1).join(maskChar); 12 13 // 返回拼接后的脱敏字符串 14 return str.slice(0, headLen) + maskedPart + str.slice(-tailLen); 15} // 使用示例: 18let phoneNumber = "13812345678"; 19let desensitizedPhone = desensitizeString(phoneNumber); // 默认脱敏后如:138****5678 20 21let idCardNumber = "110101199001011234"; 22let desensitizedIdCard = desensitizeString(idCardNumber, 6, 4); // 自定义脱敏后如:110101********1234