【发布时间】:2016-03-30 03:50:41
【问题描述】:
我需要保护文本中包含的电子邮件地址。理想情况下,找到一个可以更有效地执行此操作的正则表达式。
例子:
你好: 我的名字是 Alex,我的邮件是 alexmail@domain.com 但您可以回复 alexreply@other.domain.com。期望的输出:
你好: 我的名字是 Alex,我的邮件是 ale****@domain.com 但您可以回复 ale****@other.domain.com。逻辑是:保留前 3 个字符,其余的替换为 *,直到 @。
a@mail.com => a****@mail.com
ab@mail.com => ab****@mail.com
abc@mail.com => abc****@mail.com
abcd@mail.com => abc****@mail.com
abcde@mail.com => abc****@mail.com
现在,我用这种方式制作了一个保护邮件的功能,但是当它是包含多封电子邮件的文本时,我无法使用 replaceAll。
public static String protectEmailAddress(String emailAddress) {
String[] split = emailAddress.split("@");
if (split[0].length() >= 3) {
split[0] = split[0].substring(0, 3);
}
emailAddress = StringUtils.join(split, "****@");
return emailAddress;
}
所以基本上我需要的是一个很好的正则表达式。类似于this 的内容,但如果可能的话,包含邮件的另一部分。
谢谢...
【问题讨论】: