很多時(shí)候我們都是通過一組正則表達(dá)式來判斷用戶輸入的身份證是否合法,那在用正則表達(dá)式判斷之前,首先要做到的是對(duì)身份證信息的一些效驗(yàn)規(guī)則的知曉:
1、號(hào)碼的結(jié)構(gòu)
公民身份號(hào)碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗(yàn)碼組成。排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗(yàn)碼。
2、地址碼(前六位數(shù))
表示編碼對(duì)象常住戶口所在縣(市、旗、區(qū))的行政區(qū)劃代碼,按gb/T2260的規(guī)定執(zhí)行。
3、出生日期碼(第七位至十四位)
表示編碼對(duì)象出生的年、月、日,按gb/T7408的規(guī)定執(zhí)行,年、月、日代碼之間不用分隔符。
4、順序碼(第十五位至十七位)
表示在同一地址碼所標(biāo)識(shí)的區(qū)域范圍內(nèi),對(duì)同年、同月、同日出生的人編定的順序號(hào),順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。
5、校驗(yàn)碼(第十八位數(shù))
作為尾號(hào)的校驗(yàn)碼,是由號(hào)碼編制單位按統(tǒng)一的公式計(jì)算出來的,如果某人的尾號(hào)是0-9,都不會(huì)出現(xiàn)X,但如果尾號(hào)是10,那么就得用X來代替,因?yàn)槿绻?0做尾號(hào),那么 此人的身份證就變成了19位。X是羅馬數(shù)字的10,用X來代替10,可以保證公民的身份證符合國家標(biāo)準(zhǔn)。
然后開始進(jìn)入正題:
第一步,編寫報(bào)錯(cuò)規(guī)則:
var Errors = new Array("驗(yàn)證通過!", "身份證號(hào)碼位數(shù)不對(duì)!", "身份證號(hào)碼出生日期超出范圍或含有非法字符!", "身份證號(hào)碼校驗(yàn)錯(cuò)誤!", "身份證地區(qū)非法!");