// 完整**
#身份證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 ...