js语言实现信息脱敏
1.手机号显示前三后四位
// 方法1:正则
function getTel1(tel){
const reg = /^(\d{3})\d{4}(\d{4})$/
return tel.replace(reg, "$1****$2")
}
// 方法2:截取长度
function getTel2(tel){
return tel.substr(0, 3)+"****"+tel.substr(tel.length-4)
}
const tel = "17326453333"
console.log(getTel1(tel)) // 173****3333
console.log(getTel2(tel)) // 173****3333
2.姓名脱敏
function getName(name) {
let newStr
if (name.length === 2) {
newStr = name.substr(0, 1) + '*'
} else if (name.length > 2) {
let char = ''
for (let i = 0, len = name.length - 2; i < len; i++) {
char += '*'
}
newStr = name.substr(0, 1) + char + name.substr(-1, 1)
} else {
newStr = name
}
return newStr
}
console.log(getName('张')) // 张
console.log(getName('张一')) // 张*
console.log(getName('张一一')) // 张*一
console.log(getName('张一一一')) // 张**一
3.总结一下截取字符串的三种方法slice() / substr() / substring()
1.substr()
- 参数1:起始下标:如果是负数,则该参数规定的是从字符串的尾部开始算起。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推
- 参数2:截取的长度(截取几个字符):非负的整数,如果没有此参数,则表示截取到原字符串结尾的字符
- 注意:如果参数2写了负数,但截取长度不可能为负,所以结果为空字符串
var str = 'abcdefghijk'
console.log(str.substr(2,4)) // cdef
console.log(str.substr(4)) // efghijk
console.log(str.substr(-5,2)) // gh
console.log(str.substr(-5,-3)) // ''
2.substring()
- 参数1:起始下标:如果是负数,会将这个负数自动转化为0
- 参数2:结束下标+1:如果是负数,会将这个负数自动转化为0;如果没有此参数,则表示截取到原字符串结尾的字符
- 注意:
参数1和参数2都为负数时:都转化为0,所以结果为空字符串;
参数1大于参数2时:会自动将参数1和参数2交换;
参数1为正数,参数2为负数时:将参数2转化为0,此时参数1大于参数2,再自动交换,也就是从0开始截取到参数1的位置。
var str = 'abcdefghijk'
console.log(str.substring(4)) // efghijk
console.log(str.substring(2,4)) // cd
console.log(str.substring(-5,2)) // ab -- (0,2)
console.log(str.substring(4,1)) // bcd -- (1,4)
console.log(str.substring(4,-1)) // abcd -- (4,0) -- (0,4)
console.log(str.substring(-5,-3)) // '' -- (0,0)
3. slice()
- 参数1:起始下标:如果是负数,则该参数规定的是从字符串的尾部开始算起。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推
- 参数2:结束下标+1:如果没有此参数,则表示截取到原字符串结尾的字符。如果该参数是负数,规定的是从字符串的尾部开始算起的位置
- 注意:
参数1大于参数2时:不会自动交换,结果就是空字符串;
参数1和参数2有负值时:都是从结束位置开始算起,只要最终:参数1对应的索引在参数2的左边,就能正常截取;参数1对应的索引在参数2的右边,结果就是空字符串;参数1对应的索引和参数2对应的索引相等,结果就是空字符串。
var str = 'abcdefghijk'
console.log(str.slice(2,4)) // cd
console.log(str.slice(0,-5)) // abcdef
console.log(str.slice(-5,-3)) // gh