使用各种屏蔽电子邮件解决方案进行更新
foo@bar.com
⇒f**@b**.com
(当前问题)-s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\G(?=[^@]*$)).(?=.*\.)", "*")(请参阅正则表达式演示)foo@bar.com
⇒f**@b*r.com
-s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\G(?=[^@]*$)).(?=.*[^@]\.)", "*")(见正则表达式演示)foo@bar.com
⇒f*o@b*r.com
-s.replaceAll("(?<=.)[^@](?=[^@]*?[^@]@)|(?:(?<=@.)|(?!^)\G(?=[^@]*$)).(?=.*[^@]\.)", "*")(见正则表达式演示)foo@bar.com
⇒f**@b*****m
-s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\G(?=[^@]*$)).(?!$)", "*")(见正则表达式演示)foo@bar.com
⇒f*o@b*****m
-s.replaceAll("(?<=.)[^@](?=[^@]*[^@]@)|(?:(?<=@.)|(?!^)\G(?=[^@]*$)).(?!$)", "*")(见正则表达式演示)
原始答案
如果您不能使用基于 代码的 解决方案,则可以使用
s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\G(?=[^@]*$)).(?=.*\.)", "*")参见正则表达式演示
它的作用 :
(?<=.)[^@](?=[^@]*?@)
-any炭比其它@
([^@]
)由任何单个字符(前面(?<=.)
)和接着用比其他任何0以上字符@
到一个@
((?=[^@]*?@)
)|
- 要么(?:(?<=@.)|(?!^)\G(?=[^@]*$))
-将字符串中的位置与前面的成功匹配()的末尾的@
任何char((?<=@.)
)或(|
)匹配(?!^)\G
,并将除@
uo 以外的任何0+字符的末尾匹配到字符串((?=[^@]*$)
)的末尾.
-任何单个字符(?=.*\.)
-后跟任意0+字符,直到.
字符串中的最后一个符号。



