如何用正则表达式中的*屏蔽部分字符串

时间:2014-11-07 07:54:40

标签: java regex email replace mask

我想用

掩盖Java中的电子邮件地址
some-email@domail.com 

s********l@domail.com 

- 屏蔽本地名称,不仅包括第一个和最后一个字母 我想要更换符号的*匹配数量

我需要一些像

这样的表达方式
 /^(.)(.*)(.)@(.*)$/    

并在第2部分中用*

替换每个符号

我如何用Java做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以将此正则表达式与String#replaceAll

一起使用
String email = "some-email@domail.com";

String masked = email.replaceAll("(?<=.).(?=[^@]*?.@)", "*");
//=> s********l@domail.com

答案 1 :(得分:0)

这可以使用正则表达式(?&lt; =。{1})。(?= [^ @] *?。@)

下面的分叉:

。{1} 匹配任何字符(行终止符除外)

(适用?= [^ @] ?@)    匹配下面列表中不存在的单个字符[^ @] ? *?量词 - 在零和无限时间之间匹配,尽可能少,根据需要扩展(懒惰) @匹配字符@字面(区分大小写)