一、姓名脱敏
1、脱敏规则一:显示姓名中的第一个字,其它用*号代替。
显示姓名中的第一个字,如为英文等其他语种,也是显示第一个字母。其它用*号代替。
① 举例
张* 王** A****
② 实现方法文章来源:https://www.toymoban.com/news/detail-459957.html
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*****67
console.log(hideIdCard('FRA123456789107')) // FR***********07
console.log(hideIdCard('440582202305254223')) // 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***567
console.log(hideIdCard('FRA123456789107')) // FRA12*****89107
console.log(hideIdCard('440582202305254223')) // 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文章来源地址https://www.toymoban.com/news/detail-459957.html
console.log(utils.hideBankAccount('62177777555555553654')) // 621*************3654
到了这里,关于对敏感信息脱敏,如对姓名、证件号码、手机号码、银行卡号码进行脱敏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!