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,返回身份证信息 |