【如何使用js过滤出一段文本中的手机号、证件号信息】

一、思路

  1. 🍓 循环遍历每个字符、判断是否为数字
  2. 🍇 过滤出连续的11位数字(手机号)、18位数字(身份证号)
  3. 🍉 正则校验连续的11位数字是否为标准手机号格式
  4. 🍒 正则校验连续的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

在这里插入图片描述

四、寄语

心平可愈三千疾
心静可通万事理
事缓则心静 心静则智慧生
智慧生则能量黎聚 能量聚则境遇变
让时间说话 对了就是幸运
错了就是一种人生经历
事缓则圆 人缓则安

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值