使用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;
}
相關文章
相關標籤/搜索