关于正则全局匹配除html标签外的手机号码

项目中碰到一个问题,比如我在输入框中输入一段文字,其中有几个手机号码。如一下代码:
李的手机:13818998756,还有王的手机:13818987647,最后是郑的手机:< a href="tel:13919897654">13919897654< /a>
我点击发送按钮,要把这段文字中的李的手机和王的手机匹配到,而忽略匹配郑的手机号。

另外点击编辑按钮,以上这段文字中,就要匹配到< a href="tel:13919897654">13919897654< /a>,而忽略李的手机和王的手机

不知这2段正则应该如何去写?

阅读 3.1k
4 个回答

忽略匹配郑的手机号可以先把郑的匹配出来,删除掉,然后再匹配李和王的手机号,
匹配郑的手机号并删除:

var mobile=document.getElementById('mobile').innerHTML;
var res=/<a[\s|\S]*<\/a>/g;
var r=mobile.replace(res,'');

模棱两可的问题,看不懂

可以给这李和王的那两段代码设置相同的类,给郑的设置另外一个与李和王的class不同的类名,用document.querySelectorAll(".李和王的类名")获取李和王的电话号码,郑的用document.querySelector(".郑的类名")获取郑的电话号码;
var mobile = document.querySelectorAll(".李和王的类名").innerHTML;
var mobile1 = document.querySelectorAll(".郑的类名").innerHTML;
var reg = /^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$/;
var r1 = reg .replace(mobile);
var r2 = reg .replace(mobile1);

相对来说sukies的方法更好一些,不过文本中可能存在不止一对a标签。所以正则我修改了一下。

let tags=/<a\s\S+>(\s+)?(\d{11})(\s+)?<\/a>/g
推荐问题