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

Java中如何替换正则表达式未匹配到的字符串?

实现邮箱部分字符隐藏的方案

当然可以实现这个需求!我来给你拆解一下思路和具体实现方式~

需求回顾

你需要保留邮箱的第一个字符,以及**@前最后一个字符+@及后续所有内容**,中间的所有字符替换成星号。比如输入dineshkani.n@gmail.com,最终得到d**********n@gmail.com。

具体实现

我们可以通过正则捕获三个关键部分:首字符、中间待隐藏内容、需要保留的后缀部分(含@前最后一个字符),然后用星号替换中间部分。

Python 示例

import re

email = "dineshkani.n@gmail.com"
match_result = re.match(r'^(.)(.*)(.@.*)$', email)
if match_result:
    first_char = match_result.group(1)
    hidden_part_length = len(email) - len(first_char) - len(match_result.group(3))
    masked_email = f"{first_char}{'*' * hidden_part_length}{match_result.group(3)}"
    print(masked_email)  # 输出:d**********n@gmail.com

JavaScript 示例

const email = "dineshkani.n@gmail.com";
const maskedEmail = email.replace(/^(.)(.*)(.@.*)$/, (_, p1, p2, p3) => {
  // p2是中间需要隐藏的内容,用对应长度的星号替换
  return p1 + '*'.repeat(p2.length) + p3;
});
console.log(maskedEmail); // 输出:d**********n@gmail.com

思路解释

  1. 正则^(.)(.*)(.@.*)$的作用:
    • ^(.):捕获邮箱的第一个字符(对应示例中的d)
    • (.*):捕获第一个字符到@前最后一个字符之间的所有内容(对应示例中的ineshkani.)
    • (.@.*)$:捕获@前最后一个字符+@及后续所有内容(对应示例中的n@gmail.com)
  2. 动态生成星号:根据中间待隐藏内容的长度,生成相同数量的星号,再将三个部分拼接起来,就得到了最终的隐藏效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:00:59