1、需求
将某个字符串中所有的电话号码的中间四位改为 ****
2、实现思路
1、使用正则匹配的方式把字符串中所有的电话号码取出
2、把取出的手机号码做字符的替换修改
3、效果
4、php实现
代码如下:
public function vaildTel($s){
$n = preg_match_all("/15[0-9]\d{8}|17[0-9]\d{8}|14[0-9]\d{8}|13[0-9]\d{8}|18[0-9]\d{8}/",$s,$arr);
foreach ($arr[0] as $tel) {
$new = substr($tel,0,3).'****'.substr($tel,7,strlen($tel));
$s = str_replace($tel,$new,$s);
}
return $s;
}
5、JS实现
function vaildTel(s){
var obj = s.match(/((((13[0-9])|(15[^4])|(18[0,1,2,3,5-9])|(17[0-8])|(147))\d{8})|((\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}))?/g)
var tel ;
var trueTel;
for (var item in obj){
tel = obj[item];
if(tel && tel.length == 11){
trueTel = tel.substr(0, 3) + '****' + tel.substr(7)
s=s.replace(tel,trueTel);
}
}
return s;
}
6、缺陷
PHP实现的时候,如果字符串的长度大于11位,那么仅仅会对前11位数字进行处理
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。