掩盖String的某些部分

Sur*_*ali 8 java regex mask

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

输入和期望的结果

1) 9843444556 -  98*******6   
2) test@mint.com - t***@****.com 
Run Code Online (Sandbox Code Playgroud)

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

zx8*_*x81 23

电话:

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

电子邮件:

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

说明:电话

  • \b边界有助于检查,我们的数字(也有其他方法可以做到这一点,但在这里,这是不行的)开始.
  • (\d{2}) 捕获两个数字到组1(两个第一个数字)
  • \d+ 匹配任意数量的数字
  • (\d) 捕获第2组的最后一位数字
  • 在更换,$1$2包含由1和2组相匹配的内容

说明:电子邮件

  • \b边界有助于检查,我们是字符的开始(也有其他方法可以做到这一点,但在这里,这是不行的).
  • (\w) 捕获一个单词char到组1
  • [^@]+ 匹配一个或多个不是的字符 @
  • \S+ 匹配一个或多个不是空白字符的字符
  • (\.[^\s.]+) 捕获点和任何不是第2组点或空格的字符
  • 在更换,$1$2包含由1和2组相匹配的内容