目前手机号码运营商正则判断功能

1、目前运营商增加了好多虚拟号段,在网上汇总了一下号段的规则,在此做下整理.

170号段前4位可以用来区分与虚拟运营商合作的基础运营,电信是1700;联通是1709;移动是1705。


工信部再向中国联通核发了9000万码号资源,用以支持虚拟运营商开展业务。在此次核发新码号资源后,

中国联通已经拥有1704、1707、1708、1709,1710、1711、1712、1713、1714、1715、1716、1717、1718、1719共14个千万级号段,并且171整个亿级号段都已归属联通。

中国电信目前虚拟运营商号段为:1700、1701、1702共3个千万级号段,累计3000万号码资源;

中国移动目前虚拟运营商号段为:1703、1705、1706共3个千万级号段,累计3000万号码资源。

至此,中国联通总共拥有了1.4亿号码资源,成为三大运营商中拥有虚拟运营商业务号码最多的一家。 

知道了虚拟号段规则就OK了下面给出正则匹配规则

  var isChinaMobile = "^134[0-8]\\d{7}$|^(?:13[5-9]|147|15[0-27-9]|178|1703|1705|1706|18[2-478])\\d{7,8}$"; //移动
var isChinaUniom = "^(?:13[0-2]|145|15[56]|176|1704|1707|1708|1709|171|18[56])\\d{7,8}|$"; //联通

  var isChinaTelcom = "^(?:133|153|1700|1701|1702|177|173|18[019])\\d{7,8}$";//电信

规则是这样,js中使用就不写了,写下C#的匹配,需要的直接拿走就可以用

public  string GetRegex(string input)
        {
            var isChinaMobile = "^134[0-8]\\d{7}$|^(?:13[5-9]|147|15[0-27-9]|178|1703|1705|1706|18[2-478])\\d{7,8}$"; //移动
            var isChinaUnion = "^(?:13[0-2]|145|15[56]|176|1704|1707|1708|1709|171|18[56])\\d{7,8}$"; //联通
            var isChinaTelcom = "^(?:133|153|1700|1701|1702|177|173|18[019])\\d{7,8}$"; // 电信      
            Regex regex = new Regex(isChinaMobile);
            if (regex.IsMatch(input))
            {
                return "移动";
            }
            regex = new Regex(isChinaUnion);
            if (regex.IsMatch(input))
            {
                return "联通";
            }
            regex = new Regex(isChinaTelcom);
            if (regex.IsMatch(input))
            {
                return "电信";
            }
            var result = DealFictitiousNo(input);
            return result;
        }
好了记录完了,下次有新号段可以直接更新下就好

你可能感兴趣的:(正则)