js实现电话号码脱敏
电话号码脱敏的实现方法
在JavaScript中实现电话号码脱敏,主要目的是保护用户隐私,通常保留前几位和后几位,中间用星号或其他符号代替。以下是几种常见的实现方式:
使用字符串截取和替换
function maskPhoneNumber(phone) {
const start = phone.slice(0, 3);
const end = phone.slice(-4);
return `${start}${end}`;
}
console.log(maskPhoneNumber('13812345678')); // 输出: 1385678
使用正则表达式替换
function maskPhoneNumber(phone) {
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1$2');
}
console.log(maskPhoneNumber('13812345678')); // 输出: 1385678
支持不同长度的电话号码
function maskPhoneNumber(phone) {
const length = phone.length;
const visibleDigits = Math.floor(length / 3);
const start = phone.slice(0, visibleDigits);
const end = phone.slice(-visibleDigits);
const masked = '*'.repeat(length - 2 * visibleDigits);
return start + masked + end;
}
console.log(maskPhoneNumber('13812345678')); // 输出: 138*678
console.log(maskPhoneNumber('1234567890')); // 输出: 123*890
国际电话号码处理
对于国际电话号码,可能需要更复杂的处理:
function maskInternationalPhone(phone) {
// 去除所有非数字字符
const digits = phone.replace(/\D/g, '');
const countryCode = digits.length > 10 ? `+${digits.slice(0, -10)}` : '';
const localNumber = digits.slice(-10);
const maskedLocal = localNumber.replace(/(\d{3})\d{4}(\d{3})/, '$1$2');
return countryCode + maskedLocal;
}
console.log(maskInternationalPhone('+8613812345678')); // 输出: +86138678
注意事项

- 确保输入是有效的电话号码,可以添加验证逻辑
- 考虑不同国家/地区的电话号码格式差异
- 在显示脱敏号码时,可能需要保留原始数据用于后台处理
- 脱敏程度可根据业务需求调整,如显示更多或更少位数
这些方法可以根据具体业务需求进行调整,例如改变显示的位数数量或使用的掩码字符。






