使用java正则表达式将内容中的email和电话号码部分信息用*号代替

/**
 *  关键信息屏蔽,屏蔽邮箱和电话
 * @param content
 * @return
 */
public static String senstiveContent(String content,String type){

   // 内容为null返回空
   if(content == null){
      return "";
   }

   String replacedStr = "";// 替换后的字符串
   String pattern = ""; // 正则表达式

   if(type.equals(CommonConst.SENSTIVE_TYPE_EMAIL)){
      // 对email@符号前的长度进行判断如果少于2个字符则保留一位明文
      String emailPattern = "\\S+@\\S+\\.\\S+";
      // 构造Pattern对象
      Pattern p = Pattern.compile(emailPattern);
      // 创建Matcher对象
      Matcher matcher = p.matcher(content);
      String patternStr = "";// 匹配的字符串
      if(matcher.find()){
         patternStr = matcher.group();
      }
      // 判断@符号的位置
      int index = patternStr.indexOf("@");
      if(index == -1){
         return content;
      }
      if(index < 2 ){
         // 保留一位明文
         pattern = "(\\S){1}\\S+(@\\S+)";
      }else{
         // 保留开头2位明文和最后一位明文
         pattern = "(\\S){2}\\S+(\\S{1}@\\S+)";
      }
      // 替换
      replacedStr = content.replaceAll(pattern,"$1****$2");
   }

   if(type.equals(CommonConst.SENSTIVE_TYPE_PHONE)){
      // 存在国际电话。规则:5位以上的连续字符即认定为电话号码
      pattern = "([0-9]{4})([0-9]+)";
      // 替换
      replacedStr = content.replaceAll(pattern,"$1****");
   }
   return replacedStr;
}

猜你喜欢

转载自my.oschina.net/u/3295928/blog/1808843