【问题标题】:Mask some part of String屏蔽字符串的某些部分
【发布时间】:2014-09-07 20:51:15
【问题描述】:

我有电话号码和电子邮件地址。我不想显示完整的信息。
所以我想用 Regex 或 MaskFormatter 屏蔽一些字符。

输入和期望的结果

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

我已经通过字符串循环实现了这一点。但正是我想通过使用正则表达式或掩码来做到这一点。请您告知一下好吗?

【问题讨论】:

  • 为什么要使用正则表达式?循环有什么问题?
  • @MK 不只是想从不同的方式做...
  • 你必须证明你为什么要以错误的方式做这件事,否则我们不能(不应该)帮助你。

标签: java regex mask


【解决方案1】:

电话:

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

【讨论】:

  • 谢谢,很高兴它有帮助。 :)
  • @zx81,我想屏蔽字符串,但可以使用正则表达式匹配器吗?
猜你喜欢
  • 2012-02-20
  • 2013-06-27
  • 2017-09-17
  • 2017-10-27
  • 1970-01-01
  • 2017-12-15
  • 2018-01-11
  • 1970-01-01
  • 2020-01-09
相关资源
最近更新 更多