一、思路
- 🍓 循环遍历每个字符、判断是否为数字
- 🍇 过滤出连续的11位数字(手机号)、18位数字(身份证号)
- 🍉 正则校验连续的11位数字是否为标准手机号格式
- 🍒 正则校验连续的18位数字是否为标准身份证号格式
二、封装方法
🍭🍭🍭🍭 封装公用方法,将文本中所有的手机号、身份证号统一过滤到一个数组中 🍭🍭🍭🍭
function replacePhoneIdCard(text){
function isNumber(value) {
return !isNaN(value);
}
let phoneRegex = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
let idCardRegex = /^([1-9]\d{5})(\d{4})(\d{2})(\d{2})(\d{3})(\d|X)$/;
let arr = [],arrTemp = []
let arrTotal = text.split('')
arrTotal.forEach((word,index)=>{
if (isNumber(word)) {
arr.push(word)
if(arr.length==11||arr.length==18){
let phone = ""
let idCard = ""
arr.forEach((item2,index2)=>{
if(arr.length==11){
phone = phone+item2
}
if(arr.length==18){
idCard = idCard+item2
}
})
if(phoneRegex.test(phone)){
arrTemp.push(phone)
}
if(idCardRegex.test(idCard)){
arrTemp.push(idCard)
}
}
}else{
arr = []
}
})
return arrTemp
}
三、方法扩展
🥰 🥰 将文本中所有的手机号、身份证号全部加密展示 🥰 🥰
“在之前代码基础上利用replace方法替换字符串”
arrTemp.forEach((item,index)=>{
if(item.length==11){
const a = item.replace(/^(\d{3})\d{4}(\d{4})$/, `$1****$2`);
text = text.replaceAll(item,a)
}
if(item.length==18){
const a = item.replace(/(?<=\d{3})\d{12}(?=\d{2})/,"************")
text = text.replaceAll(item,a)
}
})
return text
四、寄语
心平可愈三千疾
心静可通万事理
事缓则心静 心静则智慧生
智慧生则能量黎聚 能量聚则境遇变
让时间说话 对了就是幸运
错了就是一种人生经历
事缓则圆 人缓则安