一、姓名脫敏
1、脫敏規(guī)則一:顯示姓名中的第一個字,其它用*號代替。
顯示姓名中的第一個字,如為英文等其他語種,也是顯示第一個字母。其它用*號代替。
① 舉例
?張*????????王**????????A****
② 實(shí)現(xiàn)方法文章來源:http://www.zghlxwxcb.cn/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、脫敏規(guī)則二:顯示姓名中的第一個和最后一個字,其它用*號代替。
顯示姓名中的第一個和最后一個字,如為英文等其他語種,也是顯示第一個和最后一個字母。其它用*號代替。
① 舉例
*三? ? ? ?王*蛋? ? ? ? A****e
② 實(shí)現(xiàn)方法
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、對固定位數(shù)進(jìn)行脫敏
顯示前2位和后2位,其它用*號代替。
① 舉例
32**************1X
② 實(shí)現(xiàn)方法
// keepWord是要傳入的不脫敏的位數(shù)
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、特定規(guī)則脫敏
顯示前1/3和后1/3段,其他用*號代替
① 舉例
H01***567
② 實(shí)現(xiàn)方法
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
三、手機(jī)號碼脫敏
顯示前3位+****+后4位。
① 舉例
137****9050
② 實(shí)現(xiàn)方法
hidePhone(phone) {
let reg = /(\d{3})\d*(\d{4})/
return phone ? phone.replace(reg, '$1****$2') : ''
}
③ demo
console.log(hideName('18812345678')) // 188****5678
?四、銀行卡卡號脫敏
顯示前3位+ *(實(shí)際位數(shù))+后4位
① 舉例
622*********1496
② 實(shí)現(xiàn)方法
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文章來源地址http://www.zghlxwxcb.cn/news/detail-459957.html
console.log(utils.hideBankAccount('62177777555555553654')) // 621*************3654
到了這里,關(guān)于對敏感信息脫敏,如對姓名、證件號碼、手機(jī)號碼、銀行卡號碼進(jìn)行脫敏的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!