JS 脱敏通用方法

时间:2021-08-08
本文章向大家介绍JS 脱敏通用方法,主要包括JS 脱敏通用方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

前言

记录一些常用的脱敏通用方法


具体实现

  • 脱敏工具类
/**
 * 脱敏相关操作
 */
export class Desensitized {

    static phoneReg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{4}(\d{4})$/; // 手机号正则校验
    static idNoReg = /(\d{6})(\d*)(\w{3})/; // 简易身份证号码正则
    static addrReg = /(.{9})(.*)/; // 地址正则

    /**
     * 名字脱敏 保留首位
     * @param fullName
     * @returns {string}
     */
    static desensitizedName (fullName) {
        if (!fullName) {
            return "";
        }

        let str = fullName.substr(0, 1);
        for (let i = 0; i < fullName.length - 1; i++) {
            str += '*';
        }

        return str;
    }
    
    /**
     * 脱敏公用
     * @param str 脱敏字符串
     * @param begin 起始保留长度,从0开始
     * @param end 结束保留长度,到str.length结束
     * @returns {string}
     */
    static desensitizedCommon (str, begin, end) {
        if (!str && (begin + end) >= str.length) {
            return "";
        }

        let leftStr = str.substring(0, begin);
        let rightStr = str.substring(str.length - end, str.length);

        let strCon = ''
        for (let i = 0; i < str.length - end - begin; i++) {
            strCon += '*';
        }
        return leftStr + strCon + rightStr;
    }

    /**
     * 手机号脱敏
     * @param str
     * @returns {string|*|string}
     */
    static desensitizedPhone (str) {
        if (!str) {
            return "";
        }
        return str.replace(this.phoneReg, '$1****$2');
    }
    
    /**
     * 身份证号脱敏
     * @param str
     * @returns {string|*|string}
     */
    static desensitizedIdNo (str) {
        if (!str) {
            return "";
        }
        if(this.idNoReg.test(str)){
            let text1 = RegExp.$1;
            let text3 = RegExp.$3;
            let text2 = RegExp.$2.replace(/./g,"*");
            return  text1 + text2 +  text3;
        }
        return str;
    }

    /**
     * 地址脱敏
     * @param str
     * @returns {string|*|string}
     */
    static desensitizedAddr(str){
        if (!str) {
            return "";
        }
        if(this.addrReg.test(str)){
            let text1 = RegExp.$1;
            let text2 = RegExp.$2.replace(/./g,"*");
            return  text1 + text2 ;
        }
        return str;
    }

}
  • 测试
import { Desensitized } from "./utils/desensitized";

let obj = {
    name: Desensitized.desensitizedName("张三"),
    mobile: Desensitized.desensitizedCommon("13888888888", 3,4),
    phone: Desensitized.desensitizedPhone("13888888888"),
    idNo: Desensitized.desensitizedIdNo("530381199908133239"),
    addr: Desensitized.desensitizedAddr("四川省成都市高新区xxx小区31栋123号")
}

console.log(obj)
  • 结果
- End -
梦想是咸鱼
关注一下吧
以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。

原文地址:https://www.cnblogs.com/maggieq8324/p/15115251.html