Python身份證正則匹配後進行MD5加密

2021-10-18 14:01:09 字數 1522 閱讀 3481

// 完整**

#身份證md5加密

def _add111

(matched)

->str:

intstr = matched.

group()

.replace

("|",""

) a =

str( hashlib.

md5(intstr.

encode

("utf8"))

.hexdigest()

) b=

'|'+ intstr[0:

14]+a +

'|'return b

idcard = r'([|]\d(18|19|20)?\d(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d(\d|x|x)[|])'

f2 = re.

sub(idcard,_add111,f2)

身份證正則匹配詳解,我匹配的是 |331004199112130521|,左右帶了乙個符號,所以不需要的請去掉

idcard = r'([|]\d(18|19|20)?\d(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d(\d|x|x)[|])'
1、r』』 表示』『內的字段為原生,比如r』\n』,\n會作為分開的兩個字母,而不是換行。常用於正規表示式。

2、[|], 表示乙個集合,[|],表示匹配 | 字元。

3、\d, \d表示資料,表示6個,合起來就是6個資料,如331004

4、(18|19|20)?,代表18或者19或者20,身份證年份前兩位,合起來33100419,?表示匹配一次或0次

5、\d,加上上面的3310041991

6、(0[1-9]|1[012]),月份,01-09或者10-12

7、(0[1-9]|[12]\d|3[01]),日期,01-09或者10-29或者30-31

8、\d(\d|x|x),身份證末尾的3個資料和最後乙個資料或x或x

f2 = re.

sub(idcard,_add111,f2)

re.sub函式, 第乙個引數代表要匹配的模式字串,第二個引數是替換成什麼字元,也可以用函式,第三個引數是被替換的字元

_add111,即函式

def _add111

(matched)

->str:

intstr = matched.

group()

.replace

("|",""

) a =

str( hashlib.

md5(intstr.

encode

("utf8"))

.hexdigest()

) b=

'|'+ intstr[0:

14]+a +

'|'return b

將傳入的身份證去掉|後,進行md5轉碼,然後重新加上| 返回。

正則表達 正確匹配身份證

身份證號碼是乙個長度為15或18個字元的字串,如果是15位則全部由數字組成,首位不能為0 如果是18位,則前17位全部是數字,末位可能是數字或x,下面我們嘗試用正則來表示 1 9 d d 0 9x 匹配 110105199812067023 表示分組,將 d 0 9x 分成一組,就可以整體約束他們出...

身份證正則

身份證正則,不僅要考慮輸入的符合身份證規則,還需考慮最後一位符合驗證需求。身份證15位編碼規則 dddddd yymmdd xx p dddddd 6位地區編碼 yymmdd 出生年 兩位年 月日,如 910215 xx 順序編碼,系統產生,無法確定 p 性別,奇數為男,偶數為女 身份證18位編碼規...

python身份證校驗

驗證規則如下 長度必須為18位 格式為 前17位是數字,最後一位是數字或者x 不區分大小寫 前6位是地區碼,必須存在 第7位到12位是出生日期,必須是存在的日期 最後一位是驗證位,規則必須匹配 輸入為乙個身份證號的字串 輸出為乙個tuple 0 是否是身份證 1 錯誤資訊或者所屬地區 import ...