姓名、手机号、身份证号、邮箱、自定义前/后几位脱敏

1,207 阅读1分钟

手机号脱敏处理

function noPassByMobile(str){ //中间四位脱敏
    if(null != str && str != undefined){
        var pat=/(\d{3})\d*(\d{4})/;
        return str.replace(pat,'$1****$2');
    } else {
        return "";
    }
}

姓名脱敏处理

function noPassByName(str){ //3个字以内脱敏第一个字,4—6个字脱敏前两个字,大于6个字脱敏第3—6个字
    if(null != str && str != undefined){
        if(str.length <= 3){
            return "*" + str.substring(1,str.length);
        } else if(str.length > 3 && str.length <= 6){
            return "**" + str.substring(2,str.length);
        } else if(str.length > 6){
            return str.substring(0,2) + "****" + str.substring(6,str.length)
        }
    } else {
        return "";
    }
}

身份证号脱敏处理

function noPassById(str) {
    if (null != str && str != undefined) {
        var pat = /(\d{4})\d*(\d{4})/;
        return str.replace(pat, '$1***********$2');
    } else {
        return "";
    }
}

邮箱脱敏处理

function noPassByEmail(email) {
    let new_email = email;
    if (String(email).indexOf('@') > 0) {
        let str = email.split('@');
        let  _s = '';
        if (str[0].length > 3) { //@前面多于3位
            for (let i = 3; i < str[0].length; i++) {
                _s += '*';
            }  
            new_email= str[0].substr(0, 3) + _s + '@' + str[1];
        }else{ //@前面小于等于于3位
            for(let i = 1;i<str[0].length;i++){
                _s+='*'
            }
            new_email = str[0].substr(0,1)+ _s + '@' + str[1]
        }
    }
    return new_email;
}

自定义前几位、后几位进行脱敏

getChannelName(value) {
   if (value != null || value != undefined) {
     let valueLength = getStrlen(value)
     if (valueLength > 2) {
       value = plusXing(value, 1, 1, '*')
       return value
     } else if ((valueLength = 2)) {
       value = plusXing(value, 0, 1, '*')
       return value
     } else {
       return value
     }
   } else {
     return value
   }
   
function getStrlen(str) {
     let n = 0 //定义变量n,初始值为0
     for (let i = 0; i < str.length; i++) {
       //应用for循环语句,获取表单提交用户名字符串的长度
       let leg = str.charCodeAt(i) //获取字符的ASCII码值
       if (leg > 255) {
         //判断如果长度大于255
         n++ //则表示是汉字为2个字节
       } else {
         n++ //否则表示是英文字符,为1个字节
       }
     }
     return n
   }

function plusXing(str, frontLen, endLen, cha) {
// str:需处理的字符串;frontLen:保留前几位;endLen 保留后几位;cha 替换的字符串
     let len = str.length - frontLen - endLen
     let xing = ''
     for (let i = 0; i < len; i++) {
       xing += cha
     }
     return (
       str.substring(0, frontLen) + xing + str.substring(str.length - endLen)
     )
   }
 },