一、姓名脱敏
1、脱敏规则一:显示姓名中的第一个字,其它用*号代替。
显示姓名中的第一个字,如为英文等其他语种,也是显示第一个字母。其它用*号代替。
① 举例
张*王**A****
② 实现方法
hideName(name) {if (!name) {return name}return name.replace(/(^.{1})(.+)$/g, (...args) => {let tempStr = '';if (args[2] && args[2].length) {tempStr = Array.from({length: args[2].length + 1,}).join('*');}return args[1] + tempStr;});}
③ demo
console.log(hideName('小草莓')) // 小**console.log(utils.hideName('Alice')) // A****
2、脱敏规则二:显示姓名中的第一个和最后一个字,其它用*号代替。
显示姓名中的第一个和最后一个字,如为英文等其他语种,也是显示第一个和最后一个字母。其它用*号代替。
① 举例
*三 王*蛋 A****e
② 实现方法
hideName(name) {if (!name) {return name}return name.replace(/(^.{1})(.+)$/g, function (...args) {let tempStr = ''if (args[2] && args[2].length) {tempStr = Array.from({length: args[2].length}).join('*')}let res = name.length === 2 ? ('*' + name.slice(-1)) : (args[1] + tempStr + name.slice(-1))return res})}
③ demo
console.log(hideName('张三')) // *三console.log(hideName('小草莓')) // 小*莓console.log(utils.hideName('Alice')) // A***e
二、证件号码脱敏
1、对固定位数进行脱敏
显示前2位和后2位,其它用*号代替。
① 举例
32**************1X
② 实现方法
// keepWord是要传入的不脱敏的位数hideIdCard(idCard, keepWord) {if (!idCard) {return idCard}let digits = keepWord ? keepWord : 2,reg = new RegExp(`(^\\w{${digits}})(\\w+)(\\w{${digits}}$)`, 'g')return idCard.replace(reg, function (...args) {let tempStr = ''if (args[2] && args[2].length) {for (let i = 0, len = args[2].length; i < len; i++) {tempStr += '*'}}return args[1] + tempStr + args[3]})},
③ demo
console.log(hideIdCard('H01234567')) // H0*****67console.log(hideIdCard('FRA123456789107')) // FR***********07console.log(hideIdCard('44058205254223')) // 44**************23
2、特定规则脱敏
显示前1/3和后1/3段,其他用*号代替
① 举例
H01***567
② 实现方法
hideIdCard(idCard) {if (!idCard) {return idCard}let digits = parseInt(idCard.length/3)let reg = new RegExp(`(^\\w{${digits}})(\\w+)(\\w{${digits}}$)`, 'g')return idCard.replace(reg, function (...args) {let tempStr = ''if (args[2] && args[2].length) {for (let i = 0, len = args[2].length; i < len; i++) {tempStr += '*'}}return args[1] + tempStr + args[3]})},
③ demo
console.log(hideIdCard('H01234567')) // H01***567console.log(hideIdCard('FRA123456789107')) // FRA12*****89107console.log(hideIdCard('44058205254223')) // 440582******254223
三、手机号码脱敏
显示前3位+****+后4位。
① 举例
137****9050
② 实现方法
hidePhone(phone) {let reg = /(\d{3})\d*(\d{4})/return phone ? phone.replace(reg, '$1****$2') : ''}
③ demo
console.log(hideName('18812345678')) // 188****5678
四、银行卡卡号脱敏
显示前3位+ *(实际位数)+后4位
① 举例
622*********1496
② 实现方法
hideBankAccount(bankAccount) {let reg = /(\d{3})(\d+)(\d{4})/var strLength = bankAccount.match(reg)[2].length;let strValue = ''for(let i = 0; i < strLength; i++) {strValue+='*'}return bankAccount.replace(reg, "$1" + strValue + "$3")}
③ demo
console.log(utils.hideBankAccount('62177777555555553654')) // 621*************3654