很多學(xué)員在測試的時(shí)候?qū)τ趈ava編寫的程序中身份*號碼的正則表達(dá)式不太清楚,在此專門寫一篇博文說明一下。
首先要明白身份*號碼的編碼規(guī)則,然后根據(jù)編碼規(guī)則去寫正則表達(dá)式:
18位身份*號編碼規(guī)則如下:
第1位和第2位:省,自治區(qū),直轄市代碼(有關(guān)取值可查看代碼表);
第3位和第4位:地級市,盟,自治州代碼(有關(guān)取值可查看代碼表);
第5位和第6位:縣,縣級市,區(qū)代碼(有關(guān)取值可查看代碼表);
第7位到第10位:出生年;
第11位和第12位:出生月;
第13位和第14位:出生日;
第15位到第17位:順序碼,第17位若是男生則為單數(shù),若是女生則為雙數(shù)(大家可以自己驗(yàn)證一下);
第18位:表示校驗(yàn)碼,可以是0-9或者X(注意是大寫的);
所以驗(yàn)證18位身份*號碼的正則表達(dá)式為:
"^[1-9]\\\\d{5}[1-9]\\\\d{3}((0[1-9])||(1[0-2]))((0[1-9])||(1\\\\d)||(2\\\\d)||(3[0-1]))\\\\d{3}([0-9]||X)$"
其中:
1、^表示開始,$表示結(jié)束;
2、前六位:[1-9]第一位是1-9其中一位,后面是0-9隨機(jī)數(shù)5個(gè)({5}表示五位數(shù)的意思);
3、年份:[1-9]\\\\d{3}表示年份是1-9開始加0-9隨機(jī)數(shù)三個(gè),例如1994;
4、月份:((0[1-9])||(1[0-2]))表示月份是01-09或者10-12其中的兩位數(shù);
5、日:((0[1-9])||(1\\\\d)||(2\\\\d)||(3[0-1]))表示01-09或者10-19或者20-29或者30-31其中的兩位數(shù);
6、最后四位:\\\\d{3}([0-9]||X)表示3位0-9的隨機(jī)數(shù)加0-9其中一位或者X;
但是以上正則表達(dá)式驗(yàn)證的身份*號碼只能說是符合×××編碼規(guī)則,不能確定×××是否有效。因?yàn)榧词挂陨系恼齽t表達(dá)式仍然無法避免出現(xiàn)2月31日的情況,另外,對于最后一位的校驗(yàn)碼是根據(jù)具體的公式推算出來的,不是隨機(jī)的。但是對于當(dāng)下的一般項(xiàng)目來說,這個(gè)正則表達(dá)式已經(jīng)算是比較嚴(yán)謹(jǐn)?shù)囊粋€(gè)了。
補(bǔ)充:15位的身份*號已經(jīng)不再使用,但是對于15位身份*號碼的正則表達(dá)式也進(jìn)行一下補(bǔ)充,供大家參考:
"^[1-9]\\\\d{7}((0[1-9])||(1[0-2]))((0[1-9])||(1\\\\d)||(2\\\\d)||(3[0-1]))\\\\d{3}$"
說明:15位×××出生年顯示兩位,例如1994年出生,18位×××顯示1994,而15位則顯示94,另外15位×××無校驗(yàn)碼,所以整體比18位身份*號少了3位。
附-×××號最后一位校驗(yàn)碼的確定算法為:
1、將身份*號前17位數(shù)分別乘以不同的系數(shù)。從第一位到第十七位的系數(shù)分別為:
7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2;
2、將這17位數(shù)字和系數(shù)相乘的結(jié)果相加,用加出來和除以11,確定余數(shù);
3、余數(shù)只可能有0-1-2-3-4-5-6-7-8-9-10這11個(gè)數(shù)字,其分別對應(yīng)的最后一位×××的號碼為1-0-X-9-8-7-6-5-4-3-2。
大家可以親自嘗試測試一下,看一看用自己身份*號的前17位是否可以推導(dǎo)出最后一位檢驗(yàn)碼。
講師更多課程請?jiān)L問:http://edu.51cto.com/lecturer/5811414.html
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。