js实现脱敏
实现手机号脱敏
手机号脱敏通常保留前3位和后4位,中间用星号代替:
function maskPhone(phone) {
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1$2');
}
// 示例
maskPhone('13812345678'); // 返回 "1385678"
实现身份证号脱敏
身份证号保留前6位和后4位,中间用星号代替:
function maskIdCard(idCard) {
return idCard.replace(/(\d{6})\d{8}(\d{4})/, '$1$2');
}
// 示例
maskIdCard('110105199003072833'); // 返回 "1101052833"
实现姓名脱敏
姓名脱敏通常保留姓氏,名字用星号代替:
function maskName(name) {
if (name.length <= 1) return name;
return name[0] + '*'.repeat(name.length - 1);
}
// 示例
maskName('张三'); // 返回 "张*"
maskName('李小龙'); // 返回 "李"
实现银行卡号脱敏
银行卡号保留前6位和后4位:
function maskBankCard(card) {
return card.replace(/(\d{6})\d+(\d{4})/, '$1$2');
}
// 示例
maskBankCard('6225880123456789'); // 返回 "6225886789"
实现邮箱脱敏
邮箱脱敏通常保留@符号前的第一个字符和最后一个字符:
function maskEmail(email) {
const [prefix, suffix] = email.split('@');
if (prefix.length <= 2) return email;
return `${prefix[0]}${'*'.repeat(prefix.length - 2)}${prefix.slice(-1)}@${suffix}`;
}
// 示例
maskEmail('example@gmail.com'); // 返回 "e*e@gmail.com"
通用脱敏函数
可以创建一个更通用的脱敏函数:

function maskText(text, { start = 0, end = 0, maskChar = '*' } = {}) {
if (text.length <= start + end) return text;
return text.slice(0, start) +
maskChar.repeat(text.length - start - end) +
text.slice(-end);
}
// 示例
maskText('1234567890', { start: 3, end: 2 }); // 返回 "123*90"
注意事项
脱敏处理需要根据具体业务需求调整保留的位数和脱敏方式。敏感信息处理应遵循相关法律法规要求,确保数据安全和隐私保护。在正式环境中使用前,建议进行充分的测试验证。






