我无法替换正则表达式

例如我有电子邮件

[email protected]

我想更换

f****e@g***l.com

我已经开始了
(?<=.).(?=[^@]*?.@)|(?<=\@.).

在我正在测试的链接下方

REGEX

最佳答案

通过对模式进行一些进一步的调整,您可以实现:

"[email protected]".replaceAll("(?<=[^@])[^@](?=[^@]*?.[@.])", "*");

这会给你 f****e@g***l.com

一个可能更有效、更易读的解决方案可能是找到 @. 的索引,
并将子字符串的所需结果放在一起:
int atIndex = email.indexOf('@');
int dotIndex = email.indexOf('.');
if (atIndex > 2 && dotIndex > atIndex + 2) {
  String masked = email.charAt(0)
    + email.substring(1, atIndex - 1).replaceAll(".", "*")
    + email.substring(atIndex - 1, atIndex + 2)
    + email.substring(atIndex + 2, dotIndex - 1).replaceAll(".", "*")
    + email.substring(dotIndex - 1);
  System.out.println(masked);
}

10-08 12:56