1. 程式人生 > >Python正則匹配判斷手機號是否合法

Python正則匹配判斷手機號是否合法

       正則表示式,又稱正規表示式、正規表示法、正規表示式、規則表示式、常規表示法(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE),是電腦科學的一個概念。正則表示式使用單個字串來描述、匹配一系列匹配某個句法規則的字串。在很多文字編輯器裡,正則表示式通常被用來檢索、替換那些匹配某個模式的文字。

# 需求
# 定義一個函式,用於判斷輸入的手機號是否合法
# 並判斷它的運營商


# 思路步驟:

# 1.首先了解三大運營商的號段分佈

# 2.獲取使用者輸入內容

# 3.判斷輸入是否是一個手機號

# 4.如果手機號合法,判斷該手機號段的運營商

# 5.輸出

import re
def phone():
    n = input("請輸入一個手機號:")
    if re.match(r'1[3,4,5,7,8]\d{9}',n):
        print("您輸入的的手機號碼是:\n",n)
        #中國聯通:
        # 130,131,132,155,156,185,186,145,176
        if re.match(r'13[0,1,2]\d{8}',n) or \
            re.match(r"15[5,6]\d{8}",n) or \
            re.match(r"18[5,6]",n) or \
            re.match(r"145\d{8}",n) or \
            re.match(r"176\d{8}",n):
            print("該號碼屬於:中國聯通")
        #中國移動
        # 134, 135 , 136, 137, 138, 139, 147, 150, 151,
        # 152, 157, 158, 159, 178, 182, 183, 184, 187, 188;
        elif re.match(r"13[4,5,6,7,8,9]\d{8}",n) or \
            re.match(r"147\d{8}|178\d{8}",n) or \
            re.match(r"15[0,1,2,7,8,9]\d{8}",n) or \
            re.match(r"18[2,3,4,7,8]\d{8}",n):
            print("該號碼屬於:中國移動")
        else:
            #中國電信
            #133,153,189
            print("該號碼屬於:中國電信")
    else:
        print("請輸入正確的手機號")

if __name__ == '__main__':
    phone()
# 執行效果如下: