(JAVA) 电话、邮箱脱敏,带脱敏规则

简介: (JAVA) 电话、邮箱脱敏,带脱敏规则

不多说,直接上代码,拷走就能用:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class PhoneOrEmailUtil {
  /**
   *  脱敏规则——手机号码(手机号码隐藏中间4位数)
   * @Description: 
   * @param telnum
   * @return
   * @ReturnType String
   * @author: zzx
   * @Created 2020年6月2日 上午10:25:10
   */
  public static String phoneNum(String telnum){
    String rtnStr = telnum;
    if(isEmpty(rtnStr)||rtnStr.trim().length()<7){
      return rtnStr;
    }
    rtnStr = rtnStr.trim();
    // 校验是否为电话号码
    String regExp = "^1\\d{10}$";
        Pattern p = Pattern.compile(regExp);  
        Matcher m = p.matcher(rtnStr);  
        if(m.matches()){// 若判断为固话
//          rtnStr = replace(rtnStr,rtnStr.length()-3,"****");
          rtnStr = replace(rtnStr,4,"****");
        }
        return rtnStr;
  }
  
  /**
   *  脱敏规则——邮箱 (@前三位)
   * @Description: 
   * @param str
   * @return
   * @ReturnType String
   * @author: zzx
   * @Created 2020年6月2日 上午10:25:10
   */
  public static String emailNum(String str){
    String rtnStr = str;
    String regExp = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
        Pattern p = Pattern.compile(regExp); 
        Matcher matcher = p.matcher(rtnStr);  
        boolean isMatched = matcher.matches(); 
    if(isMatched){
      int s =  rtnStr.indexOf("@");
      if(s >= 6) {
        return replace(rtnStr.trim(), s-3, "****");
      }else if(s >= 3 && s < 6) {
        return replace(rtnStr.trim(), s-1, "**");
      }else {
        return str;
      }
    }else{
      return rtnStr;
    }
  }
  
  /**
   * 脱敏规则
   * @Description: 
   * @param str(需脱敏的字符串) 
   * @param n(脱敏开始位)
   * @param newChar(脱敏掩码)
   * @return
   * @ReturnType String
   * @author: zzx
   * @Created 2020年6月2日 上午10:25:10
   */
  public static String replace (String str,int n,String newChar){ 
    String s1=""; 
    String s2=""; 
    try{
      s1=str.substring(0,n-1); 
      s2=str.substring(n-1+newChar.length(),str.length());
      return s1+newChar+s2;
    }catch(Exception ex){       
      return str;
    } 
  }
  
  /**
   * 判断字符串是否为null || 空字符串
   * 
   * @param param
   * @return
   */
  public static boolean isEmpty(String param) {
    return param == null || "".equals(param.trim());
  }
  public static String replaceChar(String str) {
    String rtnStr = str;
        if(!isEmpty(rtnStr)) {
          String regExp = "^1\\d{10}$";
          Pattern p = Pattern.compile(regExp);  
          Matcher m = p.matcher(rtnStr);          
          
          String regExp2 = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
            Pattern p2 = Pattern.compile(regExp2); 
            Matcher matcher2 = p2.matcher(rtnStr);  
            
          if(m.matches()) {
            rtnStr = phoneNum(str);
          }else if(matcher2.matches()) {
            rtnStr = emailNum(str);
          }         
        }
    return rtnStr;
  }
  public static void main(String args[]) {
    String str = "xxxxxxxxxxx";
    System.out.println(phoneNum(str));
  }
}

文章知识点与官方知识档案匹配,可进一步学习相关知识

相关文章
|
3天前
|
Java 开发者
Java变量命名的规则
Java变量命名的规则
|
1月前
|
存储 Java API
掌握8条方法设计规则,设计优雅健壮的Java方法
掌握8条方法设计规则,设计优雅健壮的Java方法
|
1月前
|
存储 安全 Java
掌握8条泛型规则,打造优雅通用的Java代码
掌握8条泛型规则,打造优雅通用的Java代码
掌握8条泛型规则,打造优雅通用的Java代码
|
1月前
|
Java 开发者
Java变量命名规则
Java变量命名规则
24 0
|
1月前
|
Java
Java基础知识整理,驼峰规则、流程控制、自增自减
在这一篇文章中我们总结了包括注释、关键字、运算符的Java基础知识点,今天继续来聊一聊命名规则(驼峰)、流程控制、自增自减。
41 3
|
1月前
|
存储 Java C++
leetcode 2525 根据规则将箱子分类 c++ pyhton java c题解
leetcode 2525 根据规则将箱子分类 c++ pyhton java c题解
21 1
|
1月前
|
Java
Java 变量命名规则
4月更文挑战第6天
|
1月前
|
Java
【Java从入门到精通】Java变量命名规则(1)
【Java从入门到精通】Java变量命名规则(1)
29 0
|
1月前
|
存储 Java 开发者
Java变量命名规则
Java变量命名规则
42 0
|
1月前
|
Java Maven
java使用apache-commons-lang3生成随机字符串(可自定义规则、RandomUtils
java使用apache-commons-lang3生成随机字符串(可自定义规则、RandomUtils
121 0