前端实现字符串脱敏

2,313 阅读1分钟

需求:前端对用户信息进行脱敏操作,使用户名改为带的字符串。 ##举例: 999999 => 99**9 代码: 用户姓名脱敏机制

const changeName = (val) =>{
  if(val){
    if(val.length){
      const len = val.length
      if(len === 1){
        return '*';
      }else if(len === 2){
        return val[0] + '*';
      }else if(len === 3){
        return val[0] + '*' + val[2];
      }else if(len>3 && len <6){
        const newVal = val.substring(2,len-1);
        let newValChange = []
        for(let i =0 ;i<newVal.length;i++){
          newValChange.push('*');
        }
        return val[0]+val[1]+newValChange.join('')+val[len-1]
      }else if(len >= 6 && len <8){
        const newVal = val.substring(2,len-2);
        let newValChange = []
        for(let i =0 ;i<newVal.length;i++){
          newValChange.push('*');
        }
        return val[0]+val[1]+newValChange.join('')+val[len-2]+val[len-1]
      }else{
        const newVal = val.substring(3,len-3);
        let newValChange = []
        for(let i =0 ;i<newVal.length;i++){
          newValChange.push('*');
        }
        return val[0]+val[1]+val[2]+newValChange.join('')+val[len-3]+val[len-2]+val[len-1]
      }
    }
  }
}

调用 changeName('99999999999') //输出999*****999