屏蔽字符串的某些部分

rlcwz9us  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(252)

我没有电话和电子邮件地址。我不想显示全部信息。
所以我想用regex或maskformatter来屏蔽一些字符。
输入和期望结果

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

我用字符串循环实现了这一点。但我确实想用regex或mask来解决这个问题。请您通知一下好吗?

iq3niunx

iq3niunx1#

电话:

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) 将一个单词字符捕获到组1 [^@]+ 匹配一个或多个不匹配的字符
@ \S+ 匹配一个或多个非空白字符 (\.[^\s.]+) 捕获一个点和任何不是点或空格的字符到组2
在替换过程中, $1 以及 $2 包含第1组和第2组匹配的内容

相关问题