跳到主要内容

idcard

简介

提供中国大陆15位/18位身份证号码/港台地区的身份证号码`的校验及解析

基于GB 11643-1999 公民身份证号码GB 2260-1995 中华人民共和国行政区划代码 实现的身份证生成与校验。

18身份证号码的结构

  • 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
  • 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。
  • 地址码(1~6):表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。
  • 出生日期码(7~14):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
  • 顺序码(15~17):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
  • 校验码(18):用于校验身份证号码的一个标识,也可用于简单纠错身份证号码。

15身份证号码的结构

  • 公民身份号码是特征组合码,由十五位数字组成。
  • 排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码。
  • 地址码(1~6):表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。
  • 出生日期码(7~12):表示编码对象出生的年、月、日,年份必须在2000年之前。
  • 顺序码(13~15):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

组件接口

idcard.gs

函数原型函数作用
bool is_valid(string id)是否为有效的身份证号码
map parse(string id)解析身份证号码id,返回身份证信息
map parse_cn(string id)解析中国大陆的身份证号码id,返回身份证信息
string gen_id(bool is_adult = true, bool is_15_idcard = false)生成一个15位或18位的身份证号码,默认为18位身份证信息
string calc_check_bit(string id_prefix)根据18位的身份证号码前缀,返回校验码
map parse_hk(string id)解析中国香港的身份证号码id,返回身份证信息
map parse_tw(string id)解析中国台湾的身份证号码id,返回身份证信息