(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));
  }
}

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

相关文章
|
存储 Java 开发者
Java变量命名规则
Java变量命名规则
410 0
|
8天前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
238 98
|
5天前
|
存储 Java Go
【Java】(3)8种基本数据类型的分析、数据类型转换规则、转义字符的列举
牢记类型转换规则在脑海中将编译和运行两个阶段分开,这是两个不同的阶段,不要弄混!
58 2
|
Java 程序员
java基础(5)标识符命名规则和命名规范
Java标识符命名规则包括只能使用数字、字母、下划线\_、$,且数字不能开头,不能使用关键字命名,且严格区分大小写。命名规范建议类名、接口名首字母大写,变量名、方法名首字母小写,常量名全大写。
449 2
|
Java
Java源文件声明规则详解
Java源文件的声明规则是编写清晰、可读且符合语法规范的Java程序的基础。这些规则包括文件名必须与公共类名相同、包声明位于文件顶部、导入声明紧跟其后、类声明需明确访问级别,并允许使用注释增强代码可读性。一个源文件可包含多个类,但只能有一个公共类。遵循这些规则有助于提升代码质量和维护性。
285 28
|
Java 开发者
Java实现基于清除后分配规则的垃圾回收器及其实现原理
通过上述简化模型的实现,我们可以理解基于清除后分配规则的垃圾回收器的基本工作原理。实际上,现代JVM中的垃圾回收器比这个例子复杂得多,它们可能包括更多阶段、优化策略,以及不同类型的垃圾回收器协同工作。然而,理解这一基本概念对于深入理解垃圾回收机制和内存管理非常有帮助。
82 3
|
存储 安全 Java
掌握8条泛型规则,打造优雅通用的Java代码
掌握8条泛型规则,打造优雅通用的Java代码
掌握8条泛型规则,打造优雅通用的Java代码
|
存储 安全 算法
Java中的数据脱敏与隐私保护技术
Java中的数据脱敏与隐私保护技术
|
存储 Java API
掌握8条方法设计规则,设计优雅健壮的Java方法
掌握8条方法设计规则,设计优雅健壮的Java方法

热门文章

最新文章