js实现电话号码脱敏
电话号码脱敏的实现方法
在JavaScript中,电话号码脱敏通常需要隐藏中间几位数字以保护用户隐私。以下是几种常见的实现方式:
使用正则表达式替换
function desensitizePhone(phone) {
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1$2');
}
// 示例: desensitizePhone('13812345678') → "1385678"
处理不同长度的电话号码
function desensitizePhone(phone) {
const len = phone.length;
if (len <= 7) return phone;
const visibleDigits = Math.floor(len / 3);
const start = phone.slice(0, visibleDigits);
const end = phone.slice(-visibleDigits);
return start + '*'.repeat(len - 2 * visibleDigits) + end;
}
// 示例: desensitizePhone('4001234567') → "400*4567"
国际化电话号码处理
function desensitizeInternationalPhone(phone) {
const countryCode = phone.match(/^\+\d+/)?.[0] || '';
const mainNumber = phone.replace(countryCode, '');
const visibleDigits = Math.floor(mainNumber.length / 4);
const start = mainNumber.slice(0, visibleDigits);
const end = mainNumber.slice(-visibleDigits);
return countryCode + start + '*'.repeat(mainNumber.length - 2 * visibleDigits) + end;
}
// 示例: desensitizeInternationalPhone('+8613812345678') → "+861385678"
保留更多信息的脱敏方式
function smartDesensitize(phone) {
const isMobile = /^1[3-9]\d{9}$/.test(phone);
if (isMobile) {
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1$2');
}
return phone.replace(/(\d{2})\d{3}(\d{2})/, '$1*$2');
}
// 示例:
// smartDesensitize('13812345678') → "1385678"
// smartDesensitize('01012345678') → "01*678"
这些方法可以根据实际需求进行调整,例如改变显示的数字位数或脱敏符号。在处理用户数据时,确保符合相关隐私保护法规的要求。







