js实现电话号码脱敏
电话号码脱敏的实现方法
在JavaScript中实现电话号码脱敏,主要目的是保护用户隐私,通常保留前几位和后几位数字,中间用星号或其他符号代替。以下是几种常见的实现方式:
正则表达式替换法
使用正则表达式可以高效地匹配和替换电话号码中的特定部分:
function maskPhoneNumber(phone) {
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1$2');
}
// 示例:13812345678 -> 1385678
字符串截取拼接法

对于固定格式的电话号码,可以直接截取和拼接字符串:
function maskPhoneNumber(phone) {
const prefix = phone.substring(0, 3);
const suffix = phone.substring(phone.length - 4);
return `${prefix}${suffix}`;
}
国际化处理方案
考虑到不同国家的电话号码格式不同,可以增加更灵活的处理:

function maskPhoneNumber(phone, visibleDigits = 4) {
const maskLength = phone.length - visibleDigits * 2;
if (maskLength <= 0) return phone;
const prefix = phone.substring(0, visibleDigits);
const suffix = phone.substring(phone.length - visibleDigits);
return prefix + '*'.repeat(maskLength) + suffix;
}
// 示例:maskPhoneNumber('+8613812345678', 3) -> +86*678
处理带区号的电话号码
对于包含区号的电话号码,可以先提取区号再处理:
function maskPhoneWithAreaCode(phone) {
const parts = phone.split(/(?<=\d)\s+/);
if (parts.length > 1) {
return parts[0] + ' ' + maskPhoneNumber(parts[1]);
}
return maskPhoneNumber(phone);
}
// 示例:010 13812345678 -> 010 1385678
注意事项
- 处理前应先验证电话号码格式的有效性
- 国际号码需要考虑不同国家的号码长度和格式
- 在显示时建议添加提示说明这是脱敏后的号码
- 移动端显示需考虑不同屏幕尺寸下的展示效果
以上方法可以根据实际业务需求进行组合或调整,核心思想都是保留部分关键信息的同时隐藏敏感内容。






