gpt4 book ai didi

java - 在 Java 中替换字符串中的电子邮件

转载 作者:行者123 更新时间:2023-11-29 06:55:51 24 4
gpt4 key购买 nike

我需要保护文本中包含的电子邮件地址。理想情况下,找到可以更有效地执行此操作的正则表达式。

例子:

Hi:My Name is Alex and my mail is alexmail@domain.com but you can reply toalexreply@other.domain.com.

Desired output:

Hi:My Name is Alex and my mail is ale****@domain.com but you can reply toale****@other.domain.com.

The logic is: keep first 3 characters and replace the rest with * until the @.

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 的东西但如果可能的话,还有邮件的另一部分。

谢谢...

最佳答案

你可以使用(\\w{1,3})(\\w+)(@.*)

String str = "alexreply@other.domain.com";
str = str.replaceAll("(\\w{1,3})(\\w+)(@.*)", "$1****$3");
System.out.println(str);

输出

ale****@other.domain.com

解释:

  • (\\w{1,3}) :匹配1到3个单词字符
  • (\\w+) :匹配一个或多个单词字符
  • (@.*) :匹配(包含)@
  • 之后的任何内容
  • $1 :表示第一组 (\\w{1,3})
  • $3 :表示第三组 (@.*)

关于java - 在 Java 中替换字符串中的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34440281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com