自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你能一眼判斷手機(jī)號、郵箱、身份證號是否正確嗎?Python 幫你搞定!

開發(fā)
今天就來給大家封裝一組超實用的格式校驗工具函數(shù),搞定做表單校驗、注冊驗證、數(shù)據(jù)清洗時的三個高頻驗證需求!

當(dāng)你做表單校驗、注冊驗證、數(shù)據(jù)清洗的時候,是不是經(jīng)常會碰到這些問題?

  • 這是個合法手機(jī)號嗎?
  • 郵箱地址格式對不對?
  • 身份證號碼能用嗎?

今天就來給大家封裝一組超實用的 格式校驗工具函數(shù),搞定這 3 個高頻驗證需求!

目標(biāo)功能

校驗類型

支持說明

手機(jī)號

支持中國大陸 11 位手機(jī)號格式

身份證號

支持 18 位中國身份證校驗(支持校驗碼)

郵箱地址

常規(guī)郵箱格式校驗(包含常見特殊字符)

原理:正則表達(dá)式(re 模塊)

Python 自帶的 re 模塊可以實現(xiàn)強(qiáng)大的模式匹配,校驗格式是它的強(qiáng)項。只需幾行代碼,就能輕松搞定你想要的規(guī)則校驗。

工具函數(shù)封裝

import re

def is_valid_phone(phone: str) -> bool:
    """
    判斷是否為合法的中國大陸手機(jī)號(以1開頭,11位數(shù)字)
    """
    return re.fullmatch(r"1[3-9]\d{9}", phone) is not None

def is_valid_email(email: str) -> bool:
    """
    判斷是否為合法郵箱地址
    """
    return re.fullmatch(r"[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+", email) is not None

def is_valid_id_card(id_card: str) -> bool:
    """
    判斷是否為合法身份證號(18位,支持校驗碼X/x,區(qū)號生日等不在檢測范圍,要好好學(xué)習(xí))
    """
    return re.fullmatch(r"\d{17}[\dXx]", id_card) is not None

示例使用

if __name__ == "__main__":
    print(is_valid_phone("13812345678"))  # ? True
    print(is_valid_email("test.email+100@domain.com"))  # ? True
    print(is_valid_id_card("110101199003071234"))  # ? True

錯誤示例測試

print(is_valid_phone("123456"))  # ? False
print(is_valid_email("bad-email@"))  # ? False
print(is_valid_id_card("abcdefg1234567890x"))  # ? False

拓展建議

  • 進(jìn)一步校驗身份證號碼中的出生日期是否合法
  • 郵箱是否屬于特定域名(如僅允許 @qq.com)
  • 手機(jī)號是否真實存在(接入運(yùn)營商三要素 API)

總結(jié)一句話

不要再手寫 if 判斷啦!用正則表達(dá)式封裝好校驗函數(shù),調(diào)用方便、邏輯清晰、擴(kuò)展簡單!

責(zé)任編輯:趙寧寧 來源: Ssoul肥魚
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號