當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
java,javascript对18位身份证格式的验证算法
生活随笔
收集整理的這篇文章主要介紹了
java,javascript对18位身份证格式的验证算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考資料?
1 java實現的18位身份證格式驗證算法?
http://fanqiang.chinaunix.net/program/java/2006-06-22/4639.shtml ?
原碼中有少許錯誤,我已經調整過來了?
2 身份證效驗規則,經典 ?
http://since2006.com/blog/176 ?
公民身份號碼是特征組合碼,由十七位數字本體碼和一位數字校驗碼組成.排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。?
1、地址碼?
表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼,按 GB/T 2260 的規定執行。?
2、出生日期碼?
表示編碼對象出生的年、月、日,按 GB/T 7408 的規定執行。年、月、日代碼之間不用分隔符。例:某人出生日期為 1966年10月26日,其出生日期碼為 19661026。?
3、順序碼?
表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數千分配給女性。?
4 、校驗碼?
根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。由(1,2,3,4,5,6,7,8,9,X)構成.?
(1)十七位數字本體碼加權求和公式?
S = Sum(Ai * Wi), i = 0, ... , 16 ,先對前17位數字的權求和?
Ai:表示第i位置上的身份證號碼數字值?
Wi:表示第i位置上的加權因子?
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2?
(2)計算模?
Y = mod(S, 11)?
(3)通過模得到對應的校驗碼?
Y: 0 1 2 3 4 5 6 7 8 9 10?
校驗碼: 1 0 X 9 8 7 6 5 4 3 2?
下面舉例說明該計算方法并用代碼實現。?
公式:Ax=(∑(Ai×Wi))(mod 11)…………………………(1)?
i----表示身份證號碼字符從右至左包括校驗碼在內的位置序號;?
Ai----表示第i位置上的數字號碼;?
Ax----數字校驗碼的值;?
Wi----示第i位置上的加權因子;?
公式:Wi=(2^(i-1))(mod 11)…………………………(2)?
設某男性公民身份號碼為51310119820113001,首先得到各個變量:?
??? i? 18? 17? 16? 15? 14? 13? 12? 11? 10?? 9?? 8?? 7?? 6?? 5?? 4?? 3?? 2?? 1?
由公式(2)可得:?
??? Wi? 7?? 9? 10?? 5?? 8?? 4?? 2?? 1?? 6?? 3?? 7?? 9? 10?? 5?? 8?? 4?? 2?? 1?
-------------------------------------------------------------------------------?
??? Ai? 5?? 1?? 3?? 1?? 0?? 1?? 1?? 9?? 8?? 2?? 0?? 1?? 1?? 3?? 0?? 0?? 1? Ax?
Ai×Wi 35?? 9? 30?? 5?? 0?? 4?? 2?? 9? 48?? 6?? 0?? 9? 10? 15?? 0?? 0?? 2? A1?
按照公式(1)計算:?
∑(Ai×Wi)=(35+9+30+5+0+4+2+9+48+6+0+9+10+15+0+0+2)=184?
184÷11=16+8/11?
∑(Ai×Wi)(mod 11)=8?
然后根據計算的結果,從下表中查出相應的校驗碼,X表示結果為10:?
∑(Ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10?
校驗碼字符值Ai???? 1 0 X 9 8 7 6 5 4 3 2?
根據上面的方法,查出計算結果為8的校驗碼為4所以該人員的公民身份號碼應該為513101198201130014 ?
最新調整及修改: ?
參考資料?
1 JAVA代碼驗證身份證信息?
http://www.blogjava.net/zeroline/archive/2011/01/03/342227.html ?
2 java身份證驗證代碼類?
http://download.csdn.net/source/2967003 ?
特別說明,第一個鏈接上的源碼不是最新的,作者已經上傳CSDN了?
見奉上ZeroLine的源碼 ?
Java代碼?? import?java.util.Calendar;?? import?java.util.GregorianCalendar;?? import?java.util.HashMap;?? import?java.util.Map;?? ?? /**? ?*?身份證驗證的工具(支持5位或18位省份證)<br/>? ?*?身份證號碼結構:? ?*?<ol>? ?*?<li>17位數字和1位校驗碼:6位地址碼數字,8位生日數字,3位出生時間順序號,1位校驗碼。</li>? ?*?<li>地址碼(前6位):表示對象常住戶口所在縣(市、鎮、區)的行政區劃代碼,按GB/T2260的規定執行。</li>?? ?*?<li>出生日期碼,(第七位?至十四位):表示編碼對象出生年、月、日,按GB按GB/T7408的規定執行,年、月、日代碼之間不用分隔符。</li>?? ?*?<li>順序碼(第十五位至十七位):表示在同一地址碼所標示的區域范圍內,對同年、同月、同日出生的人編訂的順序號,? ?*?順序碼的奇數分配給男性,偶數分配給女性。</li>??? ?*?<li>校驗碼(第十八位數):<br/>??? ?*?<ul>? ?*?<li>十七位數字本體碼加權求和公式?s?=?sum(Ai*Wi),?i?=?0,,16,先對前17位數字的權求和;???? ?*??Ai:表示第i位置上的身份證號碼數字值.Wi:表示第i位置上的加權因.Wi:?7?9?10?5?8?4?2?1?6?3?7?9?10?5?8?4?2;</li>? ?*<li>計算模?Y?=?mod(S,?11)</li>?? ?*<li>通過模得到對應的校驗碼?Y:?0?1?2?3?4?5?6?7?8?9?10?校驗碼:?1?0?X?9?8?7?6?5?4?3?2</li>??? ?*</ul>? ?*</li>? ?*</ol>? ?*? ?*@author?cxy? ?*@since?2011-1-7? ?*@see?{@link?http://www.blogjava.net/zeroline/archive/2011/01/03/342227.html}??? ?*/?? public?class?IdcardUtil?{?? ????final?static?Map<Integer,?String>?zoneNum?=?new?HashMap<Integer,?String>();?? ????static?{?? ????????zoneNum.put(11,?"北京");?? ????????zoneNum.put(12,?"天津");?? ????????zoneNum.put(13,?"河北");?? ????????zoneNum.put(14,?"山西");?? ????????zoneNum.put(15,?"內蒙古");?? ????????zoneNum.put(21,?"遼寧");?? ????????zoneNum.put(22,?"吉林");?? ????????zoneNum.put(23,?"黑龍江");?? ????????zoneNum.put(31,?"上海");?? ????????zoneNum.put(32,?"江蘇");?? ????????zoneNum.put(33,?"浙江");?? ????????zoneNum.put(34,?"安徽");?? ????????zoneNum.put(35,?"福建");?? ????????zoneNum.put(36,?"江西");?? ????????zoneNum.put(37,?"山東");?? ????????zoneNum.put(41,?"河南");?? ????????zoneNum.put(42,?"湖北");?? ????????zoneNum.put(43,?"湖南");?? ????????zoneNum.put(44,?"廣東");?? ????????zoneNum.put(45,?"廣西");?? ????????zoneNum.put(46,?"海南");?? ????????zoneNum.put(50,?"重慶");?? ????????zoneNum.put(51,?"四川");?? ????????zoneNum.put(52,?"貴州");?? ????????zoneNum.put(53,?"云南");?? ????????zoneNum.put(54,?"西藏");?? ????????zoneNum.put(61,?"陜西");?? ????????zoneNum.put(62,?"甘肅");?? ????????zoneNum.put(63,?"青海");?? ????????zoneNum.put(64,?"新疆");?? ????????zoneNum.put(71,?"臺灣");?? ????????zoneNum.put(81,?"香港");?? ????????zoneNum.put(82,?"澳門");?? ????????zoneNum.put(91,?"外國");?? ????}?? ?????? ????final?static?int[]?PARITYBIT?=?{'1',?'0',?'X',?'9',?'8',?'7',?'6',?'5',?'4',?'3',?'2'};?? ????final?static?int[]?POWER_LIST?=?{?7,?9,?10,?5,?8,?4,?2,?1,?6,?3,?7,?9,?10,??? ????????5,?8,?4,?2};?? ?????? ????/**? ?????*?? ?????*?身份證驗證? ?????*?? ?????*@param?s?? ?????*??????號碼內容? ?????*@return?是否有效?null和""?都是false?? ?????*/?? ????public?static?boolean?isIdcard(String?s){?? ????????if(s?==?null?||?(s.length()?!=?15?&&?s.length()?!=?18))?? ????????????return?false;?? ????????final?char[]?cs?=?s.toUpperCase().toCharArray();?? ????????//校驗位數?? ????????int?power?=?0;?? ????????for(int?i=0;?i<cs.length;?i++){?? ????????????if(i==cs.length-1?&&?cs[i]?==?'X')?? ????????????????break;//最后一位可以?是X或x?? ????????????if(cs[i]<'0'?||?cs[i]>'9')?? ????????????????return?false;?? ????????????if(i?<?cs.length?-1){?? ????????????????power?+=?(cs[i]?-?'0')?*?POWER_LIST[i];?? ????????????}?? ????????}?? ?????????? ????????//校驗區位碼?? ????????if(!zoneNum.containsKey(Integer.valueOf(s.substring(0,2)))){?? ????????????return?false;?? ????????}?? ?????????? ????????//校驗年份?? ????????String?year?=?s.length()?==?15???getIdcardCalendar()?+?s.substring(6,8)?:s.substring(6,?10);?? ?????????? ????????final?int?iyear?=?Integer.parseInt(year);?? ????????if(iyear?<?1900?||?iyear?>?Calendar.getInstance().get(Calendar.YEAR))?? ????????????return?false;//1900年的PASS,超過今年的PASS?? ?????????? ????????//校驗月份?? ????????String?month?=?s.length()?==?15???s.substring(8,?10)?:?s.substring(10,12);?? ????????final?int?imonth?=?Integer.parseInt(month);?? ????????if(imonth?<1?||?imonth?>12){?? ????????????return?false;?? ????????}?? ?????????? ????????//校驗天數???????? ????????String?day?=?s.length()?==15???s.substring(10,?12)?:?s.substring(12,?14);?? ????????final?int?iday?=?Integer.parseInt(day);?? ????????if(iday?<?1?||?iday?>?31)?? ????????????return?false;?? ?????????? ????????//校驗一個合法的年月日:已經得到校驗了?? ????????/*if(!validate(iyear,?imonth,?iday))? ????????????return?false;*/?? ?????????? ????????//校驗"校驗碼"?? ????????if(s.length()?==?15)?? ????????????return?true;?? ????????return?cs[cs.length?-1?]?==?PARITYBIT[power?%?11];?? ????}?? ?????? ????private?static?int?getIdcardCalendar()?{?????????? ?????????GregorianCalendar?curDay?=?new?GregorianCalendar();?? ?????????int?curYear?=?curDay.get(Calendar.YEAR);?? ?????????int?year2bit?=?Integer.parseInt(String.valueOf(curYear).substring(2));???????????? ?????????return??year2bit;?? ????}??????? ?????? ????@Deprecated?? ????static?boolean?validate(int?year,?int?imonth,?int?iday){?? ????????//比如考慮閏月,大小月等?? ????????return?true;?? ????}?? ?????? ????public?static?void?main(String[]?args)?{?? ?????? ?????????String?[]?idCard?=?{"124578457845784571","124578200402284571","510521195402201748","510522200402306644"};?? ?????????for(String?sfz?:?idCard){?? ?????????????System.out.println(isIdcard(sfz));??? ?????????}?? ????}?? }??
經過測試以下身份證驗證不準確,作個參考吧!如身份證號碼:124578457845784571 ?
經過調整后的源碼:?
Java代碼?? public?class?IDCard?{?? ????//?wi?=2(n-1)(mod?11)?? ????final?int[]?wi?=?{?7,?9,?10,?5,?8,?4,?2,?1,?6,?3,?7,?9,?10,?5,?8,?4,?2,?1?};?? ?? ????//?verify?digit?? ????final?int[]?vi?=?{?1,?0,?'X',?9,?8,?7,?6,?5,?4,?3,?2?};?? ?? ????private?int[]?ai?=?new?int[18];?? ?? ????public?IDCard()?{?? ????}?? ?? ????//?verify?? ????public?boolean?Verify(String?idcard)?{?? ????????if?(idcard.length()?==?15)?{?? ????????????idcard?=?uptoeighteen(idcard);?? ????????}?? ????????if?(idcard.length()?!=?18)?{?? ????????????return?false;?? ????????}?? ????????String?verify?=?idcard.substring(17,?18);?? ????????if?(verify.equals(getVerify(idcard)))?{?? ????????????return?true;?? ????????}?? ????????return?false;?? ????}?? ?? ????//?get?verify?? ????public?String?getVerify(String?eightcardid)?{?? ????????int?remaining?=?0;?? ?? ????????if?(eightcardid.length()?==?18)?{?? ????????????eightcardid?=?eightcardid.substring(0,?17);?? ????????}?? ?? ????????if?(eightcardid.length()?==?17)?{?? ????????????int?sum?=?0;?? ????????????for?(int?i?=?0;?i?<?17;?i++)?{?? ????????????????String?k?=?eightcardid.substring(i,?i?+?1);?? ????????????????ai[i]?=?Integer.parseInt(k);?? ????????????}?? ?? ????????????for?(int?i?=?0;?i?<?17;?i++)?{?? ????????????????sum?=?sum?+?wi[i]?*?ai[i];?? ????????????}?? ????????????remaining?=?sum?%?11;?? ????????}?? ?? ????????return?remaining?==?2???"X"?:?String.valueOf(vi[remaining]);?? ????}?? ?? ????//?15?update?to?18?? ????public?String?uptoeighteen(String?fifteencardid)?{?? ????????String?eightcardid?=?fifteencardid.substring(0,?6);?? ????????eightcardid?=?eightcardid?+?"19";?? ????????eightcardid?=?eightcardid?+?fifteencardid.substring(6,?15);?? ????????eightcardid?=?eightcardid?+?getVerify(eightcardid);?? ????????return?eightcardid;?? ????}?? }??
測試類?
Java代碼?? IDCard?idcard?=?new?IDCard();??? System.out.println(idcard.Verify(sfz));??
經典驗證類:?
Java代碼?? public?class?IdCardDemo?{?? ?????? ????public?boolean?isIdCard(String?arrIdCard)?{?? ????????int?sigma?=?0;?? ????????Integer[]?a?=?{?7,?9,?10,?5,?8,?4,?2,?1,?6,?3,?7,?9,?10,?5,?8,?4,?2?};?? ????????String[]?w?=?{?"1",?"0",?"X",?"9",?"8",?"7",?"6",?"5",?"4",?"3",?"2"?};?? ????????for?(int?i?=?0;?i?<?17;?i++)?{?? ????????????int?ai?=?Integer.parseInt(arrIdCard.substring(i,?i?+?1));?? ????????????int?wi?=?a[i];?? ????????????sigma?+=?ai?*?wi;?? ????????}????????? ????????int?number?=?sigma?%?11;?????????? ????????String?check_number?=?w[number];?????????? ????????if?(!arrIdCard.substring(17).equals(check_number))?{?? ????????????return?false;?? ????????}?else?{?? ????????????return?true;?? ????????}?? ????}?? }??
相比第一個代碼量更少! ?推薦呀?
經過改寫后的javascript版本: ?
Java代碼?? function?isIdCard(arrIdCard){?? ????????var?tag?=?false;?????? ????????var?sigma?=?0;???? ????????var?a?=?new?Array(7,?9,?10,?5,?8,?4,?2,?1,?6,?3,?7,?9,?10,?5,?8,?4,?2?);???? ????????var?w?=?new?Array("1",?"0",?"X",?"9",?"8",?"7",?"6",?"5",?"4",?"3",?"2");????????? ????????for?(var?i?=?0;?i?<?17;?i++)?{???? ????????????var?ai?=?parseInt(arrIdCard.substring(i,?i?+?1));???? ????????????var?wi?=?a[i];???? ????????????sigma?+=?ai?*?wi;????????????? ????????}????? ????????var?number?=?sigma?%?11;?????????????? ????????var?check_number?=?w[number];????? ????????if?(arrIdCard.substring(17)?!=?check_number)?{???? ????????????tag?=??false;???? ????????}?else?{???? ????????????tag?=?true;???? ????????}????? ????????return?tag;?? }??
經過測試OK ?
身份證15位轉換為18位,參考文章:15位身份證號碼轉18位的JSP程序?
http://www.java3z.com/cwbwebhome/article/article5a/5105.jsp?id=7 ?
Java版?
Java代碼?? /**? ?????*?身份證15位轉換18位? ?????*?*/?? ????public?static?String?idCard15To18(String?ID15)?{?? ????????String?ID18?=?"";?? ????????if?(ID15.length()?==?18)?{?? ????????????ID18?=?ID15.toUpperCase();?? ????????}?? ????????if?(ID15.length()?==?15)?{?? ????????????int[]?w?=?{?7,?9,?10,?5,?8,?4,?2,?1,?6,?3,?7,?9,?10,?5,?8,?4,?2,?1?};?? ????????????char[]?A?=?{?'1',?'0',?'X',?'9',?'8',?'7',?'6',?'5',?'4',?'3',?'2'?};?? ????????????String?ID17?=?ID15.substring(0,?6)?+?"19"?+?ID15.substring(6,?15);?? ????????????int[]?ID17Array;?? ????????????ID17Array?=?new?int[17];?? ????????????for?(int?i?=?0;?i?<?17;?i++)?{?? ????????????????ID17Array[i]?=?Integer.parseInt(ID17.substring(i,?i?+?1));?? ????????????}?? ????????????int?s?=?0;?? ????????????for?(int?i?=?0;?i?<?17;?i++)?{?? ????????????????s?=?s?+?ID17Array[i]?*?w[i];?? ????????????}?? ????????????s?=?s?%?11;?? ????????????ID18?=?ID17?+?Character.toString(A[s]);?? ????????}?? ????????return?ID18;?? ????}??
JavaScrpt版本?
Java代碼?? function?idCard15To18(id){?? ??var?W?=?new?Array(7,?9,?10,?5,?8,?4,?2,?1,?6,?3,?7,?9,?10,?5,?8,?4,?2,?1);?? ??var?A?=?new?Array("1",?"0",?"X",?"9",?"8",?"7",?"6",?"5",?"4",?"3",?"2");?? ??var?i,j,s=0;?? ??var?newid;?? ??newid?=?id;?? ??newid?=?newid.substring(0,6)+"19"+newid.substring(6,id.length);?? ??for(i=0;i<newid.length;i++?){?? ????j=?parseInt(newid.substring(i,i+1))*W[i];?? ????s=s+j;?? ??}?? ??s?=?s?%?11;?? ??newid=newid+A[s];??? ??return?newid;?? }??
驗證15,18身份證號碼的合法性?
參考資料?
1 js 驗證 15位 、 18位 身份證?
http://yanpinquan.blog.163.com/blog/static/281162892011510105435903/ ?
2 用javascript驗證身份證號碼15位或18位?
http://topic.csdn.net/t/20050923/10/4288822.html ?
Java代碼?? function???checkIDCard?(str)???? {???//身份證正則表達式(15位)???? ????isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;?? ????//身份證正則表達式(18位)?? ????isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;?? ??//驗證身份證,返回結果???? ???return???(isIDCard1.test(str)||isIDCard2.test(str));?? ??}??
這個方法不是很正確,正確的做法是:先將15轉換為18位,在調用方法驗證是否正確 !
1 java實現的18位身份證格式驗證算法?
http://fanqiang.chinaunix.net/program/java/2006-06-22/4639.shtml ?
原碼中有少許錯誤,我已經調整過來了?
2 身份證效驗規則,經典 ?
http://since2006.com/blog/176 ?
公民身份號碼是特征組合碼,由十七位數字本體碼和一位數字校驗碼組成.排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。?
1、地址碼?
表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼,按 GB/T 2260 的規定執行。?
2、出生日期碼?
表示編碼對象出生的年、月、日,按 GB/T 7408 的規定執行。年、月、日代碼之間不用分隔符。例:某人出生日期為 1966年10月26日,其出生日期碼為 19661026。?
3、順序碼?
表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數千分配給女性。?
4 、校驗碼?
根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。由(1,2,3,4,5,6,7,8,9,X)構成.?
(1)十七位數字本體碼加權求和公式?
S = Sum(Ai * Wi), i = 0, ... , 16 ,先對前17位數字的權求和?
Ai:表示第i位置上的身份證號碼數字值?
Wi:表示第i位置上的加權因子?
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2?
(2)計算模?
Y = mod(S, 11)?
(3)通過模得到對應的校驗碼?
Y: 0 1 2 3 4 5 6 7 8 9 10?
校驗碼: 1 0 X 9 8 7 6 5 4 3 2?
下面舉例說明該計算方法并用代碼實現。?
公式:Ax=(∑(Ai×Wi))(mod 11)…………………………(1)?
i----表示身份證號碼字符從右至左包括校驗碼在內的位置序號;?
Ai----表示第i位置上的數字號碼;?
Ax----數字校驗碼的值;?
Wi----示第i位置上的加權因子;?
公式:Wi=(2^(i-1))(mod 11)…………………………(2)?
設某男性公民身份號碼為51310119820113001,首先得到各個變量:?
??? i? 18? 17? 16? 15? 14? 13? 12? 11? 10?? 9?? 8?? 7?? 6?? 5?? 4?? 3?? 2?? 1?
由公式(2)可得:?
??? Wi? 7?? 9? 10?? 5?? 8?? 4?? 2?? 1?? 6?? 3?? 7?? 9? 10?? 5?? 8?? 4?? 2?? 1?
-------------------------------------------------------------------------------?
??? Ai? 5?? 1?? 3?? 1?? 0?? 1?? 1?? 9?? 8?? 2?? 0?? 1?? 1?? 3?? 0?? 0?? 1? Ax?
Ai×Wi 35?? 9? 30?? 5?? 0?? 4?? 2?? 9? 48?? 6?? 0?? 9? 10? 15?? 0?? 0?? 2? A1?
按照公式(1)計算:?
∑(Ai×Wi)=(35+9+30+5+0+4+2+9+48+6+0+9+10+15+0+0+2)=184?
184÷11=16+8/11?
∑(Ai×Wi)(mod 11)=8?
然后根據計算的結果,從下表中查出相應的校驗碼,X表示結果為10:?
∑(Ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10?
校驗碼字符值Ai???? 1 0 X 9 8 7 6 5 4 3 2?
根據上面的方法,查出計算結果為8的校驗碼為4所以該人員的公民身份號碼應該為513101198201130014 ?
最新調整及修改: ?
參考資料?
1 JAVA代碼驗證身份證信息?
http://www.blogjava.net/zeroline/archive/2011/01/03/342227.html ?
2 java身份證驗證代碼類?
http://download.csdn.net/source/2967003 ?
特別說明,第一個鏈接上的源碼不是最新的,作者已經上傳CSDN了?
見奉上ZeroLine的源碼 ?
Java代碼??
經過測試以下身份證驗證不準確,作個參考吧!如身份證號碼:124578457845784571 ?
經過調整后的源碼:?
Java代碼??
測試類?
Java代碼??
經典驗證類:?
Java代碼??
相比第一個代碼量更少! ?推薦呀?
經過改寫后的javascript版本: ?
Java代碼??
經過測試OK ?
身份證15位轉換為18位,參考文章:15位身份證號碼轉18位的JSP程序?
http://www.java3z.com/cwbwebhome/article/article5a/5105.jsp?id=7 ?
Java版?
Java代碼??
JavaScrpt版本?
Java代碼??
驗證15,18身份證號碼的合法性?
參考資料?
1 js 驗證 15位 、 18位 身份證?
http://yanpinquan.blog.163.com/blog/static/281162892011510105435903/ ?
2 用javascript驗證身份證號碼15位或18位?
http://topic.csdn.net/t/20050923/10/4288822.html ?
Java代碼??
這個方法不是很正確,正確的做法是:先將15轉換為18位,在調用方法驗證是否正確 !
總結
以上是生活随笔為你收集整理的java,javascript对18位身份证格式的验证算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谁是卧底 计算机相关词汇,谁是卧底词语
- 下一篇: 软件部门职责