作者: 曾燕茹 来源: 永洪科技 时间:2022年12月21日
实现抓取信息文本中的电话号码,一段文本内容可能包括各种信息,涉及姓名、年龄、家庭住址、移动号码等,可以通过js抓取文本中的所有电话号码进行整理。
基本的逻辑就是使用正则表达式进行提取,思路如下:
1.提取出5/11位的数字组合
2.判断提取出的数字组合是否符合要求
在提取过中所用到的正则表达式方法包括:
1.a.match():用于提取()里的符合a要求的数据
2.b.test():用于判断()里是否是符合b要求的数,若符合则返回true,不符合返回false
参考如下:
//先定义一个字符串代码
var string=’中国移动10086中国联通10010中国电信10000’;
//获取其中符合要求的5位数
var est=/\d{5}/g; //表达式后加一个g代表进行全局搜索,不加则只能提取到第一个匹配的结果
var string2=string.match(est);
// 获取string2中符合要求的数
for(var i=0;i<string2.length;i++){
//判断是否符合要求,^[1]表示从1开始,[0]表示符合的第二位数,\d$表示以数字结尾,{3}表示出现3次
var cox=/^[1][0]\d{3}$/;
if (cox.test(string2[i])==true ) {
ddebug(string2[i]);
}
}
抓取到电话号码后,如果需要进行数据脱敏,可以添加以下代码:
var result = matchPhoneNum(str,regx);
debug(result);
function matchPhoneNum(str,regx){
var phoneNums = str.match(regx);
for(var i= 0;i<phoneNums.length;i++){
//替换所有手机号
var temp = phoneNums[i]
//隐藏手机号中间4位 (例如:12345678910,隐藏后为123****8910)
temp = temp.replace(/(\d{3})\d{4}(\d{4})/,'$1****$2');
debug("temp:"+temp);
str = str.replace(phoneNums[i],temp);
}
return str;
}
永洪BI
更敏捷、更快速、更强大