掩盖String的某些部分

时间:2014-07-17 05:54:59

标签: java regex mask

我有电话号码和电子邮件地址。我不想显示完整的信息 所以我在想使用Regex或MaskFormatter掩盖一些角色。

输入和所需结果

1) 9843444556 -  98*******6   
2) test@mint.com - t***@****.com 

我用String循环实现了这一点。但我确实想通过使用正则表达式或掩码来实现这一点。请你告诉它吗?

1 个答案:

答案 0 :(得分:23)

电话:

String replaced = yourString.replaceAll("\\b(\\d{2})\\d+(\\d)", "$1*******$2");

电子邮件:

String replaced = yourString.replaceAll("\\b(\\w)[^@]+@\\S+(\\.[^\\s.]+)", "$1***@****$2");

说明:电话

  • \b边界有助于检查我们是数字的开头(还有其他方法可以做到这一点,但是这样做会这样做。)
  • (\d{2})捕获两个数字到第1组(两个第一个数字)
  • \d+匹配任意数量的数字
  • (\d)捕获第2组的最后一位数字
  • 在替换中,$1$2包含与第1组和第2组匹配的内容

说明:电子邮件

  • \b边界有助于检查我们是否是角色的开头(还有其他方法可以做到这一点,但是这样做会这样做。)
  • (\w)将一个字词char捕获到第1组
  • [^@]+匹配一个或多个非@
  • 的字符
  • \S+匹配一个或多个不是空白字符的字符
  • (\.[^\s.]+)捕获一个点以及任何不属于第2组的点或空格的字符
  • 在替换中,$1$2包含与第1组和第2组匹配的内容