正則表達式Python案例(1)-中國大陸手機號碼驗證

1企锌、基礎運營商手機卡(Base Operator)

A)支持語音通話、短信于未、數據流量撕攒;
B)號碼長度為 11 位。

中國移動號段:134[0-8],13[5-9],15[0-2,7-9],172,178,18[2-4,7-8],19[5,7,8]
正則表達式:^1(?:34[0-8]|3[5-9]\d|5[0-2,7-9]\d|7[28]\d|8[2-4,7-8]\d|9[5,7,8]\d)\d{7}$

中國聯通號段:130,131,132,155,156,166,175,176,185,186,196
正則表達式:^1(?:3[0-2]|[578][56]|66|96)\d{8}$

中國電信號段:133,153,173,177,180,181,189,19[0,1,3,9]
正則表達式:^1(?:33|53|7[37]|8[019]|9[0139])\d{8}$

中國廣電號段:192
正則表達式:^1(?:92)\d{8}$

基礎運營商手機卡:中國移動號段烘浦、中國聯通號段抖坪、中國電信號段、中國廣電號段
正則表達式:^1(?:34[0-8]|3[5-9]\d|5[0-2,7-9]\d|7[28]\d|8[2-4,7-8]\d|9[5,7,8]\d|3[0-2]\d|[578][56]\d|66\d|96\d|33\d|53\d|7[37]\d|8[019]\d|9[0139]\d|92\d)\d{7}$

2闷叉、虛擬運營商手機卡(Virtual Network Operator)

A)支持語音通話擦俐、短信、數據流量握侧;
B)號碼長度為 11 位蚯瞧。

中國移動號段:170[3,5,6],165
正則表達式:^1(?:70[356]|65\d)\d{7}$

中國聯通號段:170[4,7-9],171,167
正則表達式:^1(?:70[4,7-9]|71\d|67\d)\d{7}$

中國電信號段:170[0-2],162
正則表達式:^1(?:70[0-2]|62\d)\d{7}$

虛擬運營商手機卡:中國移動號段嘿期、中國聯通號段、中國電信號段
正則表達式:^1(?:70[356]|65\d|70[4,7-9]|71\d|67\d|70[0-2]|62\d)\d{7}$

基礎虛擬運營商+虛擬運營商的手機卡:中國移動號段状知、中國聯通號段秽五、中國電信號段、中國廣電號段
正則表達式:^1(?:34[0-8]|3[5-9]\d|5[0-2,7-9]\d|7[28]\d|8[2-4,7-8]\d|9[5,7,8]\d|3[0-2]\d|[578][56]\d|66\d|96\d|33\d|53\d|7[37]\d|8[019]\d|9[0139]\d|92\d|70[356]|65\d|70[4,7-9]|71\d|67\d|70[0-2]|62\d)\d{7}$

3饥悴、物聯網數據卡(IoT Data Card)

A)支持數據流量坦喘;
B)號碼長度為 13 位。

中國移動號段:1440,148
正則表達式:^14(?:40|8\d)\d{9}$

中國聯通號段:1400,146
正則表達式:^14(?:00|6\d)\d{9}$

中國電信號段:1410
正則表達式:^14(?:10)\d{9}$

4西设、上網數據卡(Internet Data Card)

A)支持語音通話(部分)瓣铣、短信、數據流量贷揽;
B)號碼長度為 11 位棠笑。

中國移動號段:147
正則表達式:^1(?:47)\d{8}$

中國聯通號段:145
正則表達式:^1(?:45)\d{8}$

中國電信號段:149
正則表達式:^1(?:49)\d{8}$

5、衛(wèi)星移動通信(Satellite Mobile Communication)

A)支持語音通話禽绪、短信蓖救、數據流量;
B)號碼長度為 11 位印屁。

中國移動號段:1349
正則表達式:^1(?:349)\d{7}$

中國電信號段:1740[0-5]
正則表達式:^1(?:740[0-5])\d{6}$

6循捺、工信部應急通信(MIIT Crisis Communication)

A)支持語音通話、短信雄人、數據流量从橘;
B)號碼長度為 11 位。

支持號段:1740[6-9],1741[0-2]
正則表達式:^174(?:0[6-9]|1[0-2])\d{6}$

7础钠、海事衛(wèi)星通信(Maritime Satellite Communication)

A)支持語音通話恰力、短信、數據流量旗吁;

B)號碼長度為 11 位踩萎。

支持號段:1749
正則表達式:^1(?:749)\d{7}$

說明:

??1)由于攜號轉網的在部分地區(qū)已經試行畅哑,對于成功進行攜號轉網的用戶,手機號段不再能體現其當前所屬運營商剖煌;
??2)根據工信部相關文件浴麻,145、147瞒瘸、149號段允許提供語音通話功能,運營商可以根據用戶需要自主決定是否提供語音通話功能,目前147叹洲、149號段已經有支持語音通話的號碼卡放出。

Python代碼驗證:

import re

def isTelphoneNumber(telphone):
    if len(telphone) == 11:
        if re.match(r"^1(?:749)\d{7}$", telphone):
            return 'MSC'
        elif re.match(r"^174(?:0[6-9]|1[0-2])\d{6}$", telphone):
            return 'MCC'
        elif re.match(r"^1(?:349)\d{7}$", telphone):
            return 'CM_SMC'
        elif re.match(r"^1(?:740[0-5])\d{6}$", telphone):
            return 'CT_SMC'
        elif re.match(r"^1(?:47)\d{8}$", telphone):
            return 'CM_IDC'
        elif re.match(r"^1(?:45)\d{8}$", telphone):
            return 'CU_IDC'
        elif re.match(r"^1(?:49)\d{8}$", telphone):
            return 'CT_IDC'
        elif re.match(r"^1(?:70[356]|65\d)\d{7}$", telphone):
            return 'CM_VNO'
        elif re.match(r"^1(?:70[4,7-9]|71\d|67\d)\d{7}$", telphone):
            return 'CU_VNO'
        elif re.match(r"^1(?:70[0-2]|62\d)\d{7}$", telphone):
            return 'CT_VNO'
        elif re.match(r"^1(?:34[0-8]|3[5-9]\d|5[0-2,7-9]\d|7[28]\d|8[2-4,7-8]\d|9[5,7,8]\d)\d{7}$", telphone):
            return 'CM_BO'
        elif re.match(r"^1(?:3[0-2]|[578][56]|66|96)\d{8}$", telphone):
            return 'CU_BO'
        elif re.match(r"^1(?:33|53|7[37]|8[019]|9[0139])\d{8}$", telphone):
            return 'CT_BO'
        elif re.match(r"^1(?:92)\d{8}$", telphone):
            return 'CBN_BO'
        else:
            return 'Error'
    elif len(telphone) == 13:
        if re.match(r"^14(?:40|8\d)\d{9}$", telphone):
            return 'CM_IoT'
        elif re.match(r"^14(?:00|6\d)\d{9}$", telphone):
            return 'CU_IoT'
        elif re.match(r"^14(?:10)\d{9}$", telphone):
            return 'CT_IoT'
        else:
            return 'Error'
    else:
        return 'Error'

def main():
    while 1:
        tel = input("請輸入手機號:")
        if tel.upper() == 'Q':
            print('查詢結束工禾!')
            break
        else:
            result = isTelphoneNumber(tel)
            if result == 'Error':
                print("你輸入的號碼不正確运提,請重新輸入蝗柔!")
            elif result == 'MSC':
                print('你的號碼是海事衛(wèi)星通信的。')
            elif result == 'MCC':
                print('你的號碼是工信部應急通信的民泵。')
            elif result == 'CM_SMC':
                print('你的號碼是中國移動衛(wèi)星通信的癣丧。')
            elif result == 'CT_SMC':
                print('你的號碼是中國電信衛(wèi)星通信的。')
            elif result == 'CM_IDC':
                print('你的號碼是中國移動上網數據卡的栈妆。')
            elif result == 'CU_IDC':
                print('你的號碼是中國聯通上網數據卡的胁编。')
            elif result == 'CT_IDC':
                print('你的號碼是中國電信上網數據卡的。')
            elif result == 'CM_VNO':
                print('你的號碼是中國移動虛擬運營商的鳞尔。')
            elif result == 'CU_VNO':
                print('你的號碼是中國聯通虛擬運營商的嬉橙。')
            elif result == 'CT_VNO':
                print('你的號碼是中國電信虛擬運營商的。')
            elif result == 'CM_BO':
                print('你的號碼是中國移動的寥假。')
            elif result == 'CU_BO':
                print('你的號碼是中國聯通的市框。')
            elif result == 'CT_BO':
                print('你的號碼是中國電信的。')
            elif result == 'CBN_BO':
                print('你的號碼是中國廣電的糕韧。')
            elif result == 'CM_IoT':
                print('你的號碼是中國移動物聯網數據卡的枫振。')
            elif result == 'CU_IoT':
                print('你的號碼是中國聯通物聯網數據卡的。')
            elif result == 'CT_IoT':
                print('你的號碼是中國電信物聯網數據卡的萤彩。')

if __name__ == "__main__":
    main()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末粪滤,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子乒疏,更是在濱河造成了極大的恐慌额衙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怕吴,死亡現場離奇詭異窍侧,居然都是意外死亡,警方通過查閱死者的電腦和手機转绷,發(fā)現死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門伟件,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人议经,你說我怎么就攤上這事斧账。” “怎么了煞肾?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵咧织,是天一觀的道長。 經常有香客問我籍救,道長习绢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮闪萄,結果婚禮上梧却,老公的妹妹穿的比我還像新娘。我一直安慰自己败去,他們只是感情好放航,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著圆裕,像睡著了一般广鳍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上葫辐,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天搜锰,我揣著相機與錄音,去河邊找鬼耿战。 笑死蛋叼,一個胖子當著我的面吹牛,可吹牛的內容都是我干的剂陡。 我是一名探鬼主播狈涮,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸭栖!你這毒婦竟也來了歌馍?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤晕鹊,失蹤者是張志新(化名)和其女友劉穎松却,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體溅话,經...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡晓锻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了飞几。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砚哆。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖屑墨,靈堂內的尸體忽然破棺而出躁锁,到底是詐尸還是另有隱情,我是刑警寧澤卵史,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布战转,位于F島的核電站,受9級特大地震影響以躯,放射性物質發(fā)生泄漏匣吊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一寸潦、第九天 我趴在偏房一處隱蔽的房頂上張望色鸳。 院中可真熱鬧,春花似錦见转、人聲如沸命雀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吏砂。三九已至,卻和暖如春乘客,著一層夾襖步出監(jiān)牢的瞬間狐血,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工易核, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留匈织,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓牡直,卻偏偏與公主長得像缀匕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子碰逸,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內容

  • 正則表達式到底是什么東西乡小?字符是計算機軟件處理文字時最基本的單位,可能是字母饵史,數字满钟,標點符號,空格胳喷,換行符湃番,漢字等...
    獅子挽歌閱讀 2,147評論 0 9
  • 一、獲取中國目前三大運營商的手機號碼段手機號碼段鏈接http://www.gouhaowang.com/xuanh...
    夢藍藍的閱讀 4,467評論 0 21
  • tags: 正則表達式categories: JavaScript歡迎點擊我的博客原文 前端會遇到很多字符串驗證問...
    淺茉Sara閱讀 765評論 1 2
  • 為什么要做這件事 做事情總得有些理由才能持久的執(zhí)行下去厌蔽,因為最近學習html5語言牵辣,常規(guī)使用的很多信息需要表單來進...
    TsingQue閱讀 2,134評論 0 8
  • 今天是什么日子 起床:6點 就寢:10點 天氣:陰,有雷 心情:平靜 紀念日:就今天奴饮,開始寫晨間日記 任務清單 改...
    言一一2012閱讀 72評論 0 1