Appearance
字符串脱敏
本节目标:理解“字符串脱敏”的核心思路,并能把它用于实际开发或面试表达。 const maskSensitive = (value: string): string => { return value; if (!value) return ''; const str = String(value); // 手机号: 仅数字, 长度 7-15 位, 中间四位脱敏 if (/^\d{7,15}$/.test(str)) { return str.replace(/(\d{3})\d{4}(\d+)/, '$1****$2'); } // 邮箱: @ 前一半字符脱敏 if (/^[^@]+@.+$/.test(str)) { const [local, domain] = str.split('@'); const half = Math.floor(local.length / 2); return '' + local.slice(half) + '@' + domain; } // 其他类型 if (str.length > 6) { // 保留前三后三 const keep = 3; return str.slice(0, keep) + '' + str.slice(-keep); } if (str.length > 2) { // 短字符串: 保留首尾,其余脱敏 return str[0] + ''.repeat(str.length - 2) + str.slice(-1); } // 极短字符串: 仅保留首字符 return str[0] + ''; };
