身份證號碼信息解析

身份證號碼正則匹配

  • 身份證號碼
/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/

身份證號碼詳情解析

32010519820927512X 爲例

身份證編碼順序: 32 01 05 19820927 51 2 X

32: 第1位~第2位代表所在省(直轄市、自治區)的代碼

01: 第3位~第4位代表所在地級市(自治州)的代碼

05: 第5位~第6位代表所在區(縣、自治縣、縣級市)的代碼

19820927: 第7位~第14位代表出生年、月、日

51: 第15位~第16位代表所在地的派出所的代碼

2: 第17位代表性別(注:奇數 => 男 偶數 => 女)

X: 第17位代表個人信息碼,不是隨計算機的隨機產生,它是 用來檢驗身份證的正確性。(注:校檢碼可以是0—9的數字,有時也用x表示。作爲尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現X,但如果尾號是10,那麼就得用X來代替,因爲如果用10做尾號,那麼此人的身份證就變成了19位。X是羅馬數字的10,用X來代替10,可以保證公民的身份證符合國家標準。)

通過 JavaScript 獲取基本信息

以獲取 出生日期、年齡、性別、省份爲例

const getIdCardInfo = ID => {
  const Provinces = {
    11: "北京", 12: "天津", 13: "河北", 14: "山西",
    15: "內蒙古", 21: "遼寧", 22: "吉林", 23: "黑龍江",
    31: "上海", 32: "江蘇", 33: "浙江", 34: "安徽",
    35: "福建", 36: "江西", 37: "山東", 41: "河南",
    42: "湖北", 43: "湖南", 44: "廣東", 45: "廣西",
    46: "海南", 50: "重慶", 51: "四川", 52: "貴州",
    53: "雲南", 54: "西藏", 61: "陝西", 62: "甘肅",
    63: "青海", 64: "寧夏", 65: "新疆", 71: "臺灣",
    81: "香港", 82: "澳門", 91: "國外"
  };
  return {
    birthday: ID.substring(6, 14),
    age: new Date().getFullYear() - ID.substring(6, 10),
    gender: (+ID.substring(16, 17)) % 2 === 1 ? '男' : '女',   // 1 => 男  0 => 女
    province: Provinces[ID.substring(0, 2)]
  }
}
const ID = '411222198409237032';
const info = getIdCardInfo(ID);

console.log(info) // { birthday: '19840923', age: 35, gender: '男', province: '河南' }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章