You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求取满足指定掩码规则的邮箱地址脱敏处理正则表达式

邮箱脱敏实现方案

纯正则无法独立完成你要的效果,因为涉及动态计算星号补位数量的逻辑,需要配合代码的字符串操作实现,以下是可落地的方案:

核心思路

先用正则捕获邮箱的三个核心分组:用户名前3位、用户名剩余部分、@后的域名,再根据规则判断生成掩码后的用户名即可。

捕获用正则

^(.{1,3})(.*?)@(.*)$

分组说明:

  • 组1:用户名前1~3位字符
  • 组2:用户名除前3位外的剩余字符
  • 组3:@符号后的域名部分

代码实现示例

JavaScript 版本

function maskEmail(email) {
  const matchResult = email.match(/^(.{1,3})(.*?)@(.*)$/);
  // 非法邮箱格式直接返回原值
  if (!matchResult) return email;
  const [, prefix, restPart, domain] = matchResult;
  const originUsernameLen = prefix.length + restPart.length;
  let maskedUsername;
  if (originUsernameLen > 3) {
    const showPart = prefix.slice(0, 3);
    const starCount = Math.max(originUsernameLen - 3, 5);
    maskedUsername = showPart + '*'.repeat(starCount);
  } else {
    maskedUsername = prefix[0] + '*'.repeat(7);
  }
  return `${maskedUsername}@${domain}`;
}

测试效果

maskEmail('test123456789@gmail.com') // 返回 tes**********@gmail.com
maskEmail('test1@gmail.com') // 返回 tes*****@gmail.com
maskEmail('tes@gmail.com') // 返回 t*******@gmail.com
maskEmail('a@gmail.com') // 返回 a*******@gmail.com
maskEmail('ab@gmail.com') // 返回 a*******@gmail.com

补充说明

如果一定要用纯正则替换,只能覆盖固定长度的用户名场景,无法适配所有长度的动态补位需求,配合简单的字符串操作是成本最低的实现方式。

内容的提问来源于stack exchange,提问作者RohitK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:45:03