我没有电话和电子邮件地址。我不想显示全部信息。所以我想用regex或maskformatter来屏蔽一些字符。输入和期望结果
1) 9843444556 - 98*******6 2) test@mint.com - t***@****.com
我用字符串循环实现了这一点。但我确实想用regex或mask来解决这个问题。请您通知一下好吗?
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组匹配的内容
\b
(\d{2})
\d+
(\d)
$1
$2
(\w)
[^@]+
\S+
(\.[^\s.]+)
1条答案
按热度按时间iq3niunx1#
电话:
电子邮件:
说明:电话
这个
\b
边界有助于检查我们是数字的开始(有其他方法可以做到这一点,但在这里这将做到)。(\d{2})
将两个数字捕获到组1(前两个数字)\d+
匹配任意数量的数字(\d)
捕获第2组的最后一个数字在替换过程中,
$1
以及$2
包含第1组和第2组匹配的内容说明:电子邮件
这个
\b
边界有助于检查我们是字符的开始(有其他方法可以做到这一点,但在这里这将做到)。(\w)
将一个单词字符捕获到组1[^@]+
匹配一个或多个不匹配的字符@
\S+
匹配一个或多个非空白字符(\.[^\s.]+)
捕获一个点和任何不是点或空格的字符到组2在替换过程中,
$1
以及$2
包含第1组和第2组匹配的内容