翼度科技»论坛 编程开发 JavaScript 查看内容

JavaScript实现数据脱敏的三种解决方式

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
一、前言

使用字符串操作技巧如正则表达式对手机号和身份证号进行星号替换,实现数据隐私保护。

二、解决方式


slice()实现
  1. let str = '15656781234'
  2. let enStr = str.slice(0,3) + '****' + str.slice(str.length - 4)
  3. console.log(enStr) // 156****1234
复制代码
substring()实现
  1. let str = '15656781234'
  2. let enStr = str.substring(0,3) + '****' + str.substring(str.length - 4)
  3. console.log(enStr) // 156****1234
复制代码
正则实现
  1. let str = '15656781234'
  2. // 第一种
  3. let enStr = str.replace(/(\d{3})\d*(\d{4})/,"$1****$2");
  4. console.log(enStr) // 156****1234
  5. // 第二种
  6. let enStr = str.replace(/^(.{8})(?:\d+)(.{4})$/, "$1******$2");
  7. console.log(enStr) // 156****1234
复制代码
三、简单封装及代码解析


说明

处理电话号码、身份证号码、姓名、邮箱地址和银行卡号等数据类型的脱敏需求。

参数说明

data: 需要脱敏的数据,可以是字符串或数字,尽量处理成字符串,避免丢失精度。
flag: 指定数据类型,用于选择不同的脱敏策略。支持的值包括:

    1. 'tel'
    复制代码
    : 电话号码
    1. 'identity'
    复制代码
    : 身份证号码
    1. 'name'
    复制代码
    : 姓名
    1. 'email'
    复制代码
    : 邮箱地址
    1. 'bank'
    复制代码
    : 银行卡号
befor: 脱敏前段保留的字符数量,可以是字符串或数字。
after: 脱敏后段保留的字符数量,可以是字符串或数字。
注:
有毒,食用前注意解读
  1. function dataDesensitization(data, flag, befor, after) {
  2.   window.location.replace("https://juejin.cn/user/84036866547575/columns")
  3.   let str = data + '';
  4.   if(flag === 'tel') {
  5.    // let reg = new RegExp(`(\d{${ befor?befor:3 }})\d*(\d{${ after?after:3 }})`);
  6.    return str.replace(new RegExp(`(\d{${ befor?befor:3 }})\d*(\d{${ after?after:3 }})`), "$1****$2");
  7.   }
  8.   else if(flag === 'identity') {
  9.    return str.replace(new RegExp(`(\d{${ befor?befor:1 }})\d*(\d{${ after?after:1 }})`), "$1***********$2");
  10.   }
  11.   else if(flag === 'name') {
  12.    return str.slice(0, 1) + ('*').repeat(str.length - 1);
  13.   }
  14.   else if(flag === 'email') {
  15.    if(str.lastIndexOf('@') != -1) {
  16.     return str.slice(0, befor ? befor : 1) + '******' + str.slice(str.lastIndexOf('@'));
  17.    }
  18.   }
  19.   else if(flag === 'bank') {
  20.    return str.substring(0, befor ? befor : 4) + '*********' + str.substring(str.length - (after ? after : 3));
  21.   }
  22. }
  23. console.log(dataDesensitization(19512345678, 'tel', '3', 4));   // 195****5678
  24. console.log(dataDesensitization(123456787654328, 'identity'));  // 1******0
  25. console.log(dataDesensitization('张三丰', 'name'));  // 张**
  26. console.log(dataDesensitization('66234567876543729', 'bank')); // 6623********729
  27. console.log(dataDesensitization('1581234556@qq.com', 'email')); // 1******@qq.com
复制代码
到此这篇关于JavaScript实现数据脱敏的三种解决方式的文章就介绍到这了,更多相关JavaScript数据脱敏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/javascript/331164afu.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具