gpt4 book ai didi

java - 在java中屏蔽电子邮件地址

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:44 25 4
gpt4 key购买 nike

我想用“*”来掩盖电子邮件地址,但我不擅长正则表达式。

input : nileshxyzae@gmail.com
output : nil********@gmail.com

我的代码是

String maskedEmail = email.replaceAll("(?<=.{3}).(?=[^@]*?.@)", "*");

但它给了我输出 nil*****e@gmail.com 我没有弄错这里。为什么不转换最后一个字符?也有人可以解释所有这些正则表达式的含义

最佳答案

您的前瞻性 (?=[^@]*?.@) 需要在 @ 前面至少有 1 个字符(请参阅前面的点@).

如果删除它,您将替换所有预期的符号:

(?<=.{3}).(?=[^@]*?@)

这里是 the regex demo (替换为 *)。

但是,正则表达式不是适合该任务的正则表达式。您需要一个正则表达式来匹配从前 3 个字符到第一个 @ 的每个字符:

(^[^@]{3}|(?!^)\G)[^@]

参见 another regex demo , 替换为 $1*。在这里,[^@] 匹配任何不是 @ 的字符,因此我们不匹配像 abc@example.com 这样的地址。只有那些在用户名部分包含 4 个以上字符的电子邮件才会被屏蔽。

参见 IDEONE demo :

String s = "nileshkemse@gmail.com";
System.out.println(s.replaceAll("(^[^@]{3}|(?!^)\\G)[^@]", "$1*"));

关于java - 在java中屏蔽电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33100298/

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