前端脱敏展示姓名、手机号、邮箱
姓名脱敏
姓名只显示第一个字,如“张*”、“王**”
/*** 姓名脱敏:只显示第一个字,其余用 * 代替* @param {String} name 姓名字符串* @return {String} 脱敏后的姓名*/
function maskName(name) {if (!name || typeof name !== 'string') {return ''}// 如果姓名长度为0直接返回if (name.length === 0) return ''// 只保留第一个字符,其余替换成 *return name.charAt(0) + '*'.repeat(name.length - 1)
}
手机号脱敏
手机号展示前3位和后4位,中间用 * 替代,如“139****1234”
/*** 手机号脱敏:展示前3位和后4位,中间用 * 替代* @param {String} phone 手机号码字符串* @return {String} 脱敏后的手机号*/
function maskPhone(phone) {if (!phone || typeof phone !== 'string') {return ''}// 正则匹配:保留前3位和后4位,中间用 * 替代return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
}
邮箱脱敏
邮箱只显示第一个字符、@及@后面的内容,中间用 * 替代,如“1****@163.com”
/*** 邮箱脱敏:只显示第一个字符、@及@后面的内容,中间用 * 替代* @param {String} email 邮箱地址* @return {String} 脱敏后的邮箱*/
function maskEmail(email) {if (!email || typeof email !== 'string') {return ''}// 正则解释:// ^(.)(.*?)(@.*)$ 分为三组:// 1. 第一个字符 (.)// 2. 中间部分 (.*?) 非贪婪匹配// 3. @及后面的内容 (@.*)// 替换为:$1 + * * * ... + $3return email.replace(/^(.)(.*?)(@.*)$/, function(match, firstChar, middle, atPart) {// 如果中间部分为空(如 a@xx.com),则不脱敏if (middle.length === 0) {return match}// 用 * 填充中间部分const maskedMiddle = '*'.repeat(middle.length)return firstChar + maskedMiddle + atPart})
}