身份證號正則校驗

正則匹配身份證號 分爲18位和15位

 xxxxxx yyyy MM dd 375 0     十八位
 xxxxxx   yy MM dd  75 0     十五位

 地區: [1-9]\d{5}
 地區(嚴格): ([1-6][1-9]|50)\d{4}  // 補充重慶地區50
 年的前兩位: (18|19|([23]\d))        1800-2399
 年的後兩位: \d{2}
 月份: ((0[1-9])|(10|11|12))
 天數: (([0-2][1-9])|10|20|30|31)   閏年不能禁止29+
 三位順序碼: \d{3}
 兩位順序碼: \d{2}
 校驗碼: [0-9Xx]
 
 正則表達式
 十八位: ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
 十五位: ^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$

同時校驗18位和15位的身份證:

let _IDRe18 = /^([1-9]\d{5}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
let _IDre15 =  /^([1-9]\d{5}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/
if( _IDRe18.test(value) || _IDre15.test(value) ) {
	// 驗證通過
} else {
	// 驗證不通過
}

簡單校驗:

// 身份證號碼爲15位或者18位,15位時全爲數字,18位前17位爲數字,最後一位是校驗位,可能爲數字或字符X 
let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; 
if(!reg.test(card)) { 
	alert("身份證輸入不合法"); 
	return false; 
} 

1.號碼的結構
  公民身份號碼是特徵組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次爲:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。
2.地址碼
  表示編碼對象常住戶口所在縣(縣級市、旗、區)的行政區劃代碼,按GB/T2260的規定執行。
3.出生日期碼
  表示編碼對象出生的年、月、日,按GB/T7408的規定執行,年、月、日代碼之間不用分隔符。
4.順序碼
  表示在同一地址碼所標識的區域範圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。
5.校驗碼
  根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。

地址碼
1.華北地區:北京市|110000,天津市|120000,河北省|130000,山西省|140000,內蒙古自治區|150000
2.東北地區: 遼寧省|210000,吉林省|220000,黑龍江省|230000
華東地區: 上海市|310000,江蘇省|320000,浙江省|330000,安徽省|340000,福建省|350000,江西省|360000,山東省|370000,臺灣省(886)|710000
3.華中地區: 河南省|410000,湖北省|420000,湖南省|430000
4.華南地區:廣東省|440000,廣西壯族自治區|450000,海南省|460000,香港特別行政區(852)|810000,澳門特別行政區(853)|820000
5.西南地區: 四川省|510000,貴州省|520000,雲南省|530000,西藏自治區|540000,重慶市|500000
6.西北地區: 陝西省|610000,甘肅省|620000,青海省|630000,寧夏回族自治區|640000,新疆維吾爾自治區|650000

中國大陸居民身份證號碼中的地址碼的數字編碼規則爲:
第一、二位表示省(自治區、直轄市、特別行政區)。
第三、四位表示市(地級市、自治州、地區、盟及直轄市所屬區和縣的彙總碼)。其中,01-20,51-70表示地級市;21-50表示地區(自治州、盟)。
第五、六位表示縣(區、縣級市、旗)。01-18表示地級市、自治州、地區、盟轄縣級市;21-80表示縣(旗);81-99表示省直轄縣級行政單位。

生日期碼
1.(身份證號碼第七位到第十四位)表示編碼對象出生的年、月、日,其中年份用四位數字表示,年、月、日之間不用分隔符。例如:1981年05月11日就用19810511表示。

順序碼
1.(身份證號碼第十五位到十七位)地址碼所標識的區域範圍內,對同年、月、日出生的人員編定的順序號。其中第十七位奇數分給男性,偶數分給女性。

校驗碼
1.作爲尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現X,但如果尾號是10,那麼就得用X來代替,因爲如果用10做尾號,那麼此人的身份證就變成了19位,而19位的號碼違反了國家標準,並且中國的計算機應用系統也不承認19位的身份證號碼。Ⅹ是羅馬數字的10,用X來代替10,可以保證公民的身份證符合國家標準。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章