1. 程式人生 > >目前手機號碼運營商正則判斷功能

目前手機號碼運營商正則判斷功能

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;
        }
好了記錄完了,下次有新號段可以直接更新下就好