身份证号校验(极简版)
生活随笔
收集整理的這篇文章主要介紹了
身份证号校验(极简版)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
身份證號的規則如下:
/*** 身份證18位數字含義:前1、2位數字表示:所在省份的代碼;第3、4位數字表示:所在城市的代碼; 第5、6位數字表示:所在區縣的代碼;* 第7~14位數字表示:生日; 第15、16位數字表示:所在地的派出所的代碼; 第17位數字表示性別:奇數表示男性,偶數表示女性;* 第18位數字是校檢碼:* ----------------------------------------* 第十八位數字(校驗碼)的計算方法為:* 1.將前面的身份證號碼17位數分別乘以不同的加權因子(數組power)。* 2.將這17位數字和系數相乘的結果相加。* 3.用加出來和除以11得到余數* 4.用余數和第18位校驗位(數組verifyCode)比較,一致則校驗通過*/代碼如下
public class IdcardValidator {// 每位加權因子private static int power[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };// 第18位校檢碼private static String verifyCode[] = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" };//數字驗證public static boolean isDigital(String str) {return str == null || "".equals(str) ? false : str.matches("^[0-9]*$");}//校驗身份證函數public static boolean isValidateIdcard(String idcard) {// 1.不能為空;2.必須是18位;3.前17位必須都是數字if (idcard == null || idcard.length() != 18 || !isDigital(idcard.substring(0, 17))) {return false;}String idcard17 = idcard.substring(0, 17);String idcard18Code = idcard.substring(17, 18);//將前17位分開為int型,乘以相應的系數在相加賦給sum17int sum = 0;for (int i = 0; i < 17; i++) {sum += (idcard17.charAt(i)-'0')*Integer.valueOf(power[i]);}// 將身份證的第18位與算出來的校碼進行匹配,不相等就為假if (!idcard18Code.equalsIgnoreCase(verifyCode[sum % 11])) {return false;}return true;}public static void main(String[] args){String idcard = "000000000000000000";System.out.println(isValidateIdcard(idcard));} }本代碼只校驗校驗位是否正確,若要更精細的校驗按照規則校驗每個數字
如代表省份的前兩位數字:(校驗包含即可),其余不再贅述
protected String City[][] = { { "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", "國外" } };總結
以上是生活随笔為你收集整理的身份证号校验(极简版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP ABAP开发入门-徐春波-专题视
- 下一篇: 怎么修改图片大小尺寸?