Warm tip: This article is reproduced from serverfault.com, please click

java-遮罩字符串的某些部分

(java - Mask some part of String)

发布于 2014-07-17 05:54:59

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

输入和预期结果

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

我已经用String循环实现了这一点。但是正是我想通过使用正则表达式或掩码来做到这一点。你能告诉我吗?

Questioner
Surendra Jnawali
Viewed
0
2,236 2014-12-08 19:16:09

电话:

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组匹配的内容