JS【实战】敏感信息脱敏(含手机号脱敏,用户编号脱敏,姓名脱敏,证件号码脱敏)

发布于:2024-07-24 ⋅ 阅读:(131) ⋅ 点赞:(0)

手机号脱敏

  • 保留前三位和后四位,其余用 * 替换
  • 小于 11 位的原样返回
/**
 * 脱敏手机号码
 *
 * @param content 待脱敏的手机号内容
 * @param fillChar 脱敏填充字符,默认为 "*"
 * @returns 脱敏后的手机号字符串
 */
function des_phone(content, fillChar = "*") {
  if (!content) {
    return "";
  }

  // 非字符串转换为字符串
  content = content.toString();

  if (content.length < 11) {
    return content;
  }

  let index = 1;
  let result = "";

  for (let char of content) {
    if (index < 4 || index > content.length - 4) {
      result += char;
    } else {
      result += fillChar;
    }
    index++;
  }
  return result;
}

测试

let test1 = des_phone(1391234567);
console.log(test1); // 1391234567

let test2 = des_phone("13912345678");
console.log(test2); // 139****5678

let test3 = des_phone("139123456789");
console.log(test3); // 139*****6789

姓名脱敏

  • 两字姓名,保留姓,其余用 * 替换
  • 三字及以上姓名,保留首尾,其余用 * 替换
/**
 * 脱敏处理字符串中的名字
 *
 * @param content 待脱敏的字符串
 * @param fillChar 用于脱敏的填充字符,默认为 "*"
 * @returns 脱敏后的字符串
 */
function des_name(content, fillChar = "*") {
  if (!content) {
    return "";
  }

  let index = 1;
  let result = "";

  for (let char of content) {
    if (index === 1 || (index === content.length && index !== 2)) {
      result += char;
    } else {
      result += fillChar;
    }
    index++;
  }
  return result;
}

测试

let test1 = des_name("朝阳");
console.log(test1); // 朝*

let test2 = des_name("李嘉欣");
console.log(test2); // 李*欣

let test3 = des_name("诸葛神侯");
console.log(test3); // 诸**侯

证件号码脱敏

  • 保留前四位和后四位,其余用 * 替换
  • 小于 9 位的原样返回
/**
 * 对证件号码进行脱敏处理
 *
 * @param content 待脱敏的内容
 * @param fillChar 脱敏时用于填充的字符,默认为 "*"
 * @returns 脱敏后的字符串
 */
function des_ID(content, fillChar = "*") {
  if (!content) {
    return "";
  }

  // 非字符串转换为字符串
  content = content.toString();

  if (content.length < 9) {
    return content;
  }

  let index = 1;
  let result = "";

  for (let char of content) {
    if (index < 5 || index > content.length - 4) {
      result += char;
    } else {
      result += fillChar;
    }
    index++;
  }
  return result;
}

测试

let test1 = des_ID(12345678);
console.log(test1); // 12345678

let test2 = des_ID("420118196904055624");
console.log(test2); // 4201**********5624

网站公告

今日签到

点亮在社区的每一天
去签到