敏感词脱敏js

/**
 * 脱敏相关操作
 */
export default class Desensitized {
    constructor(){
        this.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})$/; // 手机号正则校验
        this.idNoReg = /(\d{6})(\d*)(\w{3})/; // 简易身份证号码正则
        this.addrReg = /(.{9})(.*)/; // 地址正则
    }
    
    /**
     * 名字脱敏 保留首位(可多名字脱敏)
     * @param fullName
     * @returns {string}
     */
    desensitizedName(fullName) {
        
        if (!fullName) {
            return "";
        }
        let name = fullName,
        list = name.split("、"),
        nv='';
        for(let j = 0; j < list.length; j++) {
            let str = list[j].substr(0, 1);
            for (let i = 0; i < list[j].length - 1; i++) {
                str += '*';
            }
            if(j<list.length-1){
                nv += str+'、'
            }else{
                nv += str;
            }
        }
        return nv
    }

    /**
     * 脱敏公用
     * @param str 脱敏字符串
     * @param begin 起始保留长度,从0开始
     * @param end 结束保留长度,到str.length结束
     * @returns {string}
     */
    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}
     */
    desensitizedPhone(str) {
        if (!str) {
            return "";
        }
        return str.replace(this.phoneReg, '$1****$2');
    }

    /**
     * 身份证号脱敏
     * @param str
     * @returns {string|*|string}
     */
    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}
     */
    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;
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值