我无法替换正则表达式
例如我有电子邮件
[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);
}