将字符串中的手机号替换为******
以下是几种将字符串中的手机号替换为******
的方法:
方法一:简单替换(匹配11位数字)
function hidePhoneNumbers(text) {
return text.replace(/1[3-9]\d{9}/g, '******');
}
// 使用示例
console.log(hidePhoneNumbers("我的手机号是13812345678,另一个是13987654321"));
// 输出: "我的手机号是******,另一个是******"
方法二:更精确的替换(确保匹配的是完整手机号)
function hidePhoneNumbersStrict(text) {
return text.replace(/(?:^|[^\d])(1(?:3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8})(?:$|[^\d])/g,
(match) => match.replace(/\d/g, '*'));
}
// 使用示例
console.log(hidePhoneNumbersStrict("联系我:13812345678或发邮件"));
// 输出: "联系我:***********或发邮件"
方法三:保留部分号码(如前三后四)
function hidePhoneNumbersPartial(text) {
return text.replace(/1[3-9]\d{9}/g,
(phone) => phone.substring(0, 3) + '****' + phone.substring(7));
}
// 使用示例
console.log(hidePhoneNumbersPartial("客服电话:13812345678"));
// 输出: "客服电话:138****5678"
方法四:处理多种隐私信息(手机号、身份证等)
function hideSensitiveInfo(text) {
// 手机号
text = text.replace(/1[3-9]\d{9}/g, '******');
// 身份证号(简单示例)
text = text.replace(/\d{17}[\dXx]/g, '******');
return text;
}
// 使用示例
console.log(hideSensitiveInfo("手机13812345678,身份证11010119900307783X"));
// 输出: "手机******,身份证******"
注意事项
-
替换策略可以根据需求调整:
-
完全替换为
******
-
保留部分号码(如前3后4)
-
替换为相同长度的
*
-
-
精确匹配手机号时,正则表达式可能需要根据最新的手机号段更新。
-
如果处理大量文本或有性能要求,可以考虑先检查是否包含手机号再进行替换。
-
对于国际号码,需要调整正则表达式模式。