身份证号校验--避免输入错,有错即刻提示
excel表格输入身份证正确性实时验证
一、示例使用的是 wps2019版 二、主要利用数据有效性 进行设计 三、身份证验证:
1、长度 2、X大写 3、逻辑验证
一、需要设置数据位置 如下图,主要位置在D2单元格
二、选中D2单元格,从菜单上方选择--数据--有效性--下拉-数据有效性
三、弹出对话框
数据有效-选择设置项 一、允许下拉框中选择为自定义 二、公式输入加入下面数据验证公式 注意:本公式只针对D2单元格,如有变 动请将下面的所有D2进行查找替换。
• 首先 公式计算获得验证结果,判断正确返回1,错误返回0 • 返回值 与 1 进行比较 结果=1 返回 True或 False • 数据有效性 根据返回的False 进行验证,False则弹出警告
三、确定即可,保留忽略空值。可以考虑在出 错警告里 添加提示
四、设置完成确定后D2单元格就可以自动验证; 然后将光标放到D2单元格右下角,变为实心十字后, 按住下拉覆盖要输入的单元格即可。
此处会自动累加D2 变为D3。
公式解释:
=IF(LEN(D2)=0,1,IF(LEN(D2)=15,1,IF(LEN(D2)<>18,0,IF(CHOOSE(MOD(SUM(MID(D 2,1,1)*7+MID(D2,2,1)*9+MID(D2,3,1)*10+MID(D2,4,1)*5+MID(D2,5,1)*8+MID(D 2,6,1)*4+MID(D2,7,1)*2+MID(D2,8,1)*1+MID(D2,9,1)*6+MID(D2,10,1)*3+MID(D 2,11,1)*7+MID(D2,12,1)*9+MID(D2,13,1)*10+MID(D2,14,1)*5+MID(D2,15,1)*8+ MID(D2,16,1)*4+MID(D2,17,1)*2),11)+1,1,0,"X",9,8,7,6,5,4,3,2)=IF(ISNUMBER(RI GHT(D2,1)*1),RIGHT(D2,1)*1,"X"),1,0))))=1
Excel中检测输入的身份证号码是否合法函数校验方法大揭秘
Excel中检测输⼊的⾝份证号码是否合法函数校验⽅法⼤揭秘什么时候需要校验⾝份证号码合法性呢?1.防⽌输⼊⼈员随⼿输⼊⼀个18位数字冒充⾝份证号码2.防⽌输⼊⼿误,有时候并⾮故意输错注意本⽅法⽆法检测⾝份证是否真实存在,只能从格式上检查号码是否合法⾝份证号码校验基本原理第1步:把号码的前17位分别乘以不同的系数,系数表如下第1步第2步:把17位数字和系数相乘的结果相加,加和值再除以11,取其余数。
⽤得到的余数与⾝份证第18位号码进⾏对照,余数与⾝份证号码第18位对应关系如下表第2步例如例如:某男⼠的⾝份证号码是622924************。
⾸先我们得出前17位与系数的乘积和是320,除以11的余数是1,对应第18位数是0。
所以这是⼀个不合法的⾝份证号码。
判断⾝份证号码是否合法的函数公式计算第18位数=IF(LEN($C2)=18,MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1),"长度错误")判断是否合法=IF(LEN($C2)=18,IF(MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1)=RIGHT($C2,1),"合法","不合法"),"长度错误")其中,C2为⾝份证号码,$B$2:$B$18为第1到17个系数。
这个⼀般存到另⼀个sheet⾥或者顶⼀个名称,与实际使⽤的表分开函数分步讲解VALUE(MID($C2,ROW($1:$17),1))ROW函数返回⼀个1到17的数组,配个mid函数依次取出C2号码中前17个数字,并将截取的⽂本⽤value转换为数值SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)⽤SUMPRODUCT函数返回MID($C2,ROW($1:$17),1)数组和$B$2:$B$18(校验表)区域对应相乘的和MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)⽤mod对上⼀步求乘积之取11的余数MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1)⽤MID函数截取10X98765432中的1位数,即⾝份证号码的第18位。
身份证验证
彩色影像扫描仪全国公民身份信息核查比对服务操作手册全国公民身份证号码查询服务中心2010年7月目录1功能介绍 (1)1.1关于彩色影像扫描仪 (1)1.2关于全国公民身份信息核查比对服务 (1)1.2.1服务定义 (1)1.2.2核查比对结果 (2)2建议配置 (3)3扫描仪驱动安装 (4)3.1硬件驱动程序安装 (4)3.2扫描仪核心软件安装 (4)4登录系统 (7)5安装控件 (8)5.1添加“可信站点” (8)5.2“可信站点”自定义设置 (9)5.3选择服务\安装控件 (10)6扫描并核查比对 (12)6.1正确放入证件 (12)6.2选择证件类型 (12)6.3扫描并核查比对 (13)6.4反馈核查比对结果 (14)6.5手工修改 (14)7客户服务 (16)8常见问题解答 (17)8.1系统登录问题 (17)8.2扫描仪没有响应 (17)8.3页面错误导致无法提交 (18)9特别声明 (20)感谢您使用全国公民身份证号码查询服务中心提供的身份信息核查比对服务,我们将竭诚为您服务。
防范欺诈风险是你我共同的责任。
1功能介绍1.1 关于彩色影像扫描仪此彩色影像扫描仪是全国公民身份证号码查询服务中心监制的一款集扫描、识别、录入、核查比对为一体的专用扫描设备。
扫描、识别、录入与我们的核查比对服务绑定在一起一键集成,为客户简化手工录入流程,提高工作效率。
1.2 关于全国公民身份信息核查比对服务1.2.1服务定义全国公民身份信息核查比对服务是指公民个人在进行社会和经济活动时,向有关机构主动提交身份证件,有关机构工作人员将公民主动提交的身份号码、姓名等信息传送至“全国公民身份信息系统”(以下简称“系统”)进行比对,系统将提供的数据与存储的数据进行比对后,返回被核查人公民身份号码、姓名与系统存储数据是否一致的结果。
在核查比对结果为“一致”的前提下,如果系统存有该被核查人照片,则可以进一步比对照片,不提供任何其他信息。
JAVA校验身份证号码工具类(支持15位和18位)
JAVA校验⾝份证号码⼯具类(⽀持15位和18位)JAVA 校验⾝份证号码⼯具类(⽀持15位和18位)import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Hashtable;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** TODO* ⾝份证校验⼯具类*/public class IDCardUtil {/*校验规则:如果为15位,只能是15位数字;前两位满⾜省/直辖市的⾏政区划代码。
如果为18位,允许为18位数字,如出现字母只能在最后⼀位,且仅能为“X”;18位中包含年⽉的字段满⾜⽇期的构成规则;前两位满⾜省/直辖市的⾏政区划代码;最后⼀位校验位满⾜⾝份证的校验规则(⾝份证校验规则见附录)。
附录:⾝份证校验规则公民⾝份证号码校验公式为RESULT = ∑( A[i] * W[i] ) mod 11。
其中,i表⽰号码字符从右⾄左包括校验码在内的位置序号;A[i]表⽰第I位置上的数字的数值;W[i]表⽰第i位置上的加权因⼦,其值如下:i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2W[i] 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2RESULT 0 1 2 3 4 5 6 7 8 9 10校验码A[1] 1 0 X 9 8 7 6 5 4 3 2*/public static boolean idCardValidate(String idCard) {String[] valCodeArr = {"1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2"};String[] wi = {"7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"};String ai = "";String ai1 = "";String ai2 = "";// 号码的长度 15位或18位if (idCard.length() != 15 && idCard.length() != 18) {return false;}// 数字除最后以为都为数字if (idCard.length() == 18) {ai = idCard.substring(0, 17);} else if (idCard.length() == 15) {ai = idCard.substring(0, 6) + "19" + idCard.substring(6, 15);}if (!isNumeric(ai)) {return false;}// 出⽣年⽉是否有效String strYear = ai.substring(6, 10); // 年份String strMonth = ai.substring(10, 12); // ⽉份String strDay = ai.substring(12, 14); // ⽉份if (!isDataFormat(strYear + "-" + strMonth + "-" + strDay)) {return false;}GregorianCalendar gc = new GregorianCalendar();SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");try {if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150|| (gc.getTime().getTime() - s.parse(strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) {return false;}} catch (Exception e) {e.printStackTrace();}if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) {return false;}if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) {return false;}// 地区码是否有效Hashtable h = getAreaCode();if (h.get(ai.substring(0, 2)) == null) {return false;}// 判断最后⼀位的值int totalmulAiWi = 0;for (int i = 0; i < 17; i++) {totalmulAiWi = totalmulAiWi + Integer.parseInt(String.valueOf(ai.charAt(i))) * Integer.parseInt(wi[i]);}int modValue = totalmulAiWi % 11;String strVerifyCode = valCodeArr[modValue];ai1 = ai + strVerifyCode.toUpperCase();ai2 = ai + strVerifyCode.toLowerCase();if (idCard.length() == 18) {if (!ai1.equals(idCard) && !ai2.equals(idCard)) {return false;}}return true;}private static boolean isNumeric(String str) {Pattern pattern = pile("[0-9]*");Matcher isNum = pattern.matcher(str);if (isNum.matches()) {return true;}return false;}private static boolean isDataFormat(String str) {boolean flag = false;String regxStr = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([135 Pattern pattern1 = pile(regxStr);Matcher isNo = pattern1.matcher(str);if (isNo.matches()) {flag = true;}return flag;}private static Hashtable getAreaCode() { Hashtable hashtable = new Hashtable(); hashtable.put("11", "北京");hashtable.put("12", "天津");hashtable.put("13", "河北");hashtable.put("14", "⼭西");hashtable.put("15", "内蒙古");hashtable.put("21", "辽宁");hashtable.put("22", "吉林");hashtable.put("23", "⿊龙江");hashtable.put("31", "上海");hashtable.put("32", "江苏");hashtable.put("33", "浙江");hashtable.put("34", "安徽");hashtable.put("35", "福建");hashtable.put("36", "江西");hashtable.put("37", "⼭东");hashtable.put("41", "河南");hashtable.put("42", "湖北");hashtable.put("43", "湖南");hashtable.put("44", "⼴东");hashtable.put("45", "⼴西");hashtable.put("46", "海南");hashtable.put("50", "重庆");hashtable.put("51", "四川");hashtable.put("52", "贵州");hashtable.put("53", "云南");hashtable.put("54", "西藏");hashtable.put("61", "陕西");hashtable.put("62", "⽢肃");hashtable.put("63", "青海");hashtable.put("64", "宁夏");hashtable.put("65", "新疆");hashtable.put("71", "台湾");hashtable.put("81", "⾹港");hashtable.put("82", "澳门");hashtable.put("91", "国外");return hashtable;}}。
检验身份证号码的正确性
检验身份证号码的正确性=IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:1 7")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2),IF(LEN(A2)=15,ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00"))))EXCEL中如何提取身份证出生日期、性别、检验身份证号码的正确性中国居民身份证号码是一组特征组合码,原为15位,现升级为18位,其编码规则为:15位:6位数字常住户口所在县市的行政区划代码,6位数字出生日期代码,3位数字顺序码。
18位:6位数字常住户口所在县市的行政区划代码,8位数字出生日期代码,3位数字顺序码和1位检验码。
其中3位数字顺序码,是为同一地址码的同年同月同日出生人员编制的顺序号,偶数的为女性,奇数的为男性。
1、提取籍贯地区的行政区划代码(A2为身份证号,下同)15与18位通用:=LEFT(A2,6)如果有一个编码和省份地区的对照表,可以用VLOOKUP函数来提取地区信息。
2、提取出生日期信息15位:=--TEXT(19&MID(A2,7,6),"#-00-00")18位:=--TEXT(MID(A2,7,8),"#-00-00")15与18位通用:=--TEXT(IF(LEN(A2)=15,19,"")&MID(A2,7,6+IF(LEN(A2)=18,2,0)),"#-00-00") 简化公式:=--TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00")(请将输入公式的单元格格式设置为日期格式)3、提取性别信息15位:=IF(MOD(RIGHT(A2),2)=1,"男","女")18位:=IF(MOD(MID(A2),17,1)=1,"男","女")15与18位通用:=IF(MOD(MID(A2,IF(LEN(A2)=15,15,17),1),2)=1,"男","女")简化公式:=IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女")4、检验身份证号码的正确性18位身份证号码的最后一位是检验码,它是根据身份证前17位数字依照规则计算出来的,其值0~9或X。
身份证正确检验及验证公式
验证公式一=IF(LEN(H20)=18,IF(RIGHT(H20,1)="X",IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18) )*7 LEFT(RIGHT(H20,17))*9 LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2LEFT(RIGHT(H20,11))*1 LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3LEFT(RIGHT(H20,8))*7 LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10LEFT(RIGHT(H20,5))*5 LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1)),"正确!","出错啦!"),IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18))*7 LEFT(RIGHT(H20,17))*9LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2 LEFT(RIGHT(H20,11))*1LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3 LEFT(RIGHT(H20,8))*7LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10 LEFT(RIGHT(H20,5))*5LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4 LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1))*1,"正确!","出错啦!")),IF(LEN(H20)=15,"老号,请注意!",IF(LEN(H20)=0,"缺号码","位数不对!")))验证公式二=MID("10X98765432",MOD(SUMPRODUCT(MID(H20,ROW(INDIRECT("1:17")),1)*2^(18 -ROW(INDIRECT("1:17")))),11) 1,1)=RIGHT(H20,1)身份证有15位和18位两种,身份证位数是否正确,我们可以用LEN函数判断。
excel身份证验证公式
excel身份证验证公式
Excel身份证验证公式
1.验证格式:数据校验公式可以验证身份证号码是否正确和合法。
Excel中可以使用“LEN()”函数来确定身份证号码字符串的长度,再与18位数对比来明确证书是否存在。
2.验证位数:只有18位数身份证号码才能使用来进行校验,15位号码已不再使用,可以通过旧省份前两位是否是“35”、“36”或“37”来判断。
3.验证省级代码:通过省份前两位码来验证省级代码,与身份证号码前两位相对应。
4.验证出生日期:可以通过对身份证号码出生日期的部分(第7到14位)与Excel 中“LEFT()”“MID()”等函数结合,来验证身份证号码的出生日期,验证准确。
5.验证顺序号:通过身份证号码的第16位和第17位数字代表性别,第15位和第18位数字代表性别,第15位数字用于最后一位校验码的算法,如果正确,身份证号码可以正确匹配!
6.验证位:计算机通过一组算法,通过身份证号码前17位数字,计算
出一个0-10之间的数字,如果运算结果与最后一位数字相等则表示验证通过!
此外,Excel中对于身份证号码的验证,还可以利用VBA编程语言进行。
其中可以使用“If()Then()Else()”结构计算出一组结果,以决定身份证号码是否要验证成功。
身份证号正则校验(js校验+JAVA校验)
⾝份证号正则校验(js校验+JAVA校验)js校验⾝份证号【15位和18位】[javascript] view plaincopyprint?function scCard(){var scType=document.getElementById("sc_card_type").value;if(scType=="1"){var scCard=document.getElementById("sc_card_num").value;if(scCard.length!=0){if(!checkCard(scCard)){$("#errorTips").html("⾝份证号码格式错误");}else{$("#errorTips").html("");}}}return false;}//function checkidno(obj) {var vcity={ 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:"国外"};checkCard = function(obj){//var card = document.getElementById('card_no').value;//是否为空// if(card === '')// {// return false;//}//校验长度,类型if(isCardNo(obj) === false){return false;}//检查省份if(checkProvince(obj) === false){return false;}//校验⽣⽇if(checkBirthday(obj) === false){return false;}//检验位的检测if(checkParity(obj) === false){return false;}return true;};//检查号码是否符合规范,包括长度,类型isCardNo = function(obj){//⾝份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后⼀位是校验位,可能为数字或字符Xvar reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;if(reg.test(obj) === false){return false;}return true;};//取⾝份证前两位,校验省份checkProvince = function(obj)var province = obj.substr(0,2);if(vcity[province] == undefined){return false;}return true;};//检查⽣⽇是否正确checkBirthday = function(obj){var len = obj.length;//⾝份证15位时,次序为省(3位)市(3位)年(2位)⽉(2位)⽇(2位)校验位(3位),皆为数字if(len == '15'){var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;var arr_data = obj.match(re_fifteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date('19'+year+'/'+month+'/'+day);return verifyBirthday('19'+year,month,day,birthday);}//⾝份证18位时,次序为省(3位)市(3位)年(4位)⽉(2位)⽇(2位)校验位(4位),校验位末尾可能为X if(len == '18'){var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;var arr_data = obj.match(re_eighteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date(year+'/'+month+'/'+day);return verifyBirthday(year,month,day,birthday);}return false;};//校验⽇期verifyBirthday = function(year,month,day,birthday){var now = new Date();var now_year = now.getFullYear();//年⽉⽇是否合理if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day){//判断年份的范围(3岁到100岁之间)var time = now_year - year;if(time >= 0 && time <= 130){return true;}return false;}return false;};//校验位的检测checkParity = function(obj){//15位转18位obj = changeFivteenToEighteen(obj);var len = obj.length;if(len == '18'){var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0, i, valnum;for(i = 0; i < 17; i ++){cardTemp += obj.substr(i, 1) * arrInt[i];}valnum = arrCh[cardTemp % 11];if (valnum == obj.substr(17, 1)){return true;}return false;}return false;};//15位转18位⾝份证号changeFivteenToEighteen = function(obj)if(obj.length == '15'){var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0, i;obj = obj.substr(0, 6) + '19' + obj.substr(6, obj.length - 6);for(i = 0; i < 17; i ++){cardTemp += obj.substr(i, 1) * arrInt[i];}obj += arrCh[cardTemp % 11];return obj;}return obj;};JAVA校验package com.ebiz.base.utils;import java.text.SimpleDateFormat;import java.util.Date;import java.util.GregorianCalendar;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;import com.ebiz.base.consts.BaseConst;import com.ebiz.base.consts.ConfigConst;import com.ebiz.base.consts.ExceptionConst;import com.ebiz.framework.util.date.DateUtil;import com.ebiz.framework.util.date.DateValidate;import com.ebiz.framework.util.validate.ValidateUtil;import puta.FndPageRule;import com.hp.hpl.sparta.ParseException;public class CheckIdentificationUtil {public static void main(String[] args) {System.out.println(idCardValidate("370802*********"));}/**功能 18位⾝份证的校验* @param idStr* @return ParseException 1001* @throws Exception* @throws ParseException* @throws NumberFormatException* @throws java.text.ParseException* @author wangming*/public static String idCardValidate(String idStr) {if (idStr == null || ( idStr.length() != 15 && idStr.length() != 18 )) {return BaseConst.PUBLIC_RESPONSE_FAIL;}if( idStr.length() == 15 ){StringBuilder sb = new StringBuilder();sb.append(idStr.substring(0, 6)).append("19").append(idStr.substring(6));try {sb.append(getVerifyCode(sb.toString()));idStr = sb.toString();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(sb);}String errorInfo = "";// 记录错误信息//取模映射String[] valCodeArr = { "1", "0", "X", "9", "8", "7", "6", "5", "4","3", "2" };//加权String[] wi = { "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7","9", "10", "5", "8", "4", "2" }; String ai =idStr.substring(0, 17);if (ValidateUtil.isDigit(ai) == false) {errorInfo = ExceptionConst.PAXINFO_CARD_ISNOTNUM;return errorInfo;}// ================ 出⽣年⽉是否有效 ================String strYear = ai.substring(6, 10);// 年份String strMonth = ai.substring(10, 12);// ⽉份String strDay = ai.substring(12, 14);// ⽉份if (DateValidate.isStrDate(ai.substring(6,14))== false) {errorInfo = ExceptionConst.PAXINFO_CARD_BIRTHDAY_OVER;//"⾝份证⽣⽇⽆效。
身份证校验码的解释
身份证校验码的解释新居民身份证的号码是按照国家的标准编制的,由18位组成:前六位为行政区划代码,第七至第十四位为出生日期码,第15至17位为顺序码,第18位为校验码。
作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机应用系统也不承认19位的身份证号码。
Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。
身份证中第十八位数字的计算方法为:1.将前面的身份证号码17位数分别乘以不同的系数。
从第一位到第十七位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。
2.将这17位数字和系数相乘的结果相加。
3.用加出来和除以11,看余数是多少?4余数只可能有0 、1、2、3、4、5、6、7、8、9、10这11个数字。
其分别对应的最后一位身份证的号码为1、0、X、9、8、7、6、5、4、3、2。
5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。
如果余数是10,身份证的最后一位号码就是2。
例如:某男性的身份证号码是34052419800101001X。
我们要看看这个身份证是不是合法的身份证。
首先:我们得出,前17位的乘积和是189然后:用189除以11得出的结果是17 + 2/11,也就是说余数是2。
最后:通过对应规则就可以知道余数2对应的数字是x。
所以,这是一个合格的身份证号码。
这里面说的很清楚了,最后一位是用来辨别身份证真假的一种办法。
而不是同年同月同日生的人的识别码。
15位和18位校验规则代码设置
15位和18位校验规则代码设置1. 15位和18位校验规则代码的概念和作用唯一识别信息号码是每个公民的标识,它包含了个人的身份信息,并在很多重要场合使用。
在我国,根据公安部颁布的《中华人民共和国居民唯一识别信息法》,唯一识别信息号码一般有15位和18位两种规则代码设置。
这两种唯一识别信息号码的设置规则是为了便于核对、验证和辨认身份信息的真伪。
其中,15位唯一识别信息号码是早期所采用的规则代码,而18位唯一识别信息号码则是根据国家有关法规和政策的调整而产生的。
在本文中,我将会对15位和18位校验规则代码的设置进行全面评估和深入研究,以帮助大家更好地理解这两种规则代码的作用和设计。
2. 15位校验规则代码的设置15位唯一识别信息号码由6位地区码、6位生日和3位顺序码组成。
其中,地区码代表了公民的户口信息所在地,生日是公民出生的年月日,顺序码是在同一地区、同一生日的人中的序号。
通过这种设置,唯一识别信息号码能够唯一地标识一个公民的身份信息,并便于相关部门辨认和核对。
在15位唯一识别信息号码的设置中,采用了一定的校验规则代码,以确保号码的有效性和真实性。
3. 18位校验规则代码的设置18位唯一识别信息号码是根据国家有关法规和政策的调整而产生的,它比15位唯一识别信息号码多出了一位校验码。
通过加入校验码,能够更好地保障唯一识别信息号码的唯一性和真实性,减少唯一识别信息号码被伪造或篡改的可能。
在18位唯一识别信息号码的设置中,校验规则代码更加严格和详细,以适应社会发展和信息安全的需求。
4. 15位和18位校验规则代码的对比在15位和18位唯一识别信息号码的校验规则代码中,都包含了地区码、生日和顺序码,以及校验码(18位唯一识别信息号码)。
但是,由于社会发展和法规的调整,18位唯一识别信息号码的校验规则更加详尽和严格,能够更好地保障身份信息的安全和真实性。
在使用唯一识别信息号码的时候,应当优先选择18位唯一识别信息号码,以确保个人身份信息的真实性和安全性。
浙江省中小学电子学籍系统操作手册(学校用户)
《浙江省中小学生电子学籍系统用户手册》-- (学校版)浙江省中小学电子学籍系统(学校版)使用手册杭州容博教育科技有限公司2014.11目录一.基础信息管理 ......................................................................................................................- 4 -1.1学校(机构)基础信息管理 ........................................................................................- 5 -1.2年级信息管理 ................................................................................................................- 5 -1.3班级信息管理 ................................................................................................................- 6 -1.4教师信息管理 ................................................................................................................- 7 -二、学生信息管理 ......................................................................................................................- 7 -2.1学生基本信息 ................................................................................................................- 7 -2.1.1身份证校验 ........................................................................................................- 9 -2.1.2照片处理 (10)2.1.3批量修改 (11)2.2学生成长档案 (17)2.2.1奖励情况 (17)2.2.2体格检查情况 (18)2.2.3体育健康标准情况 (19)2.2.4任职情况 (20)2.2.5经济困难学生与资助情况 (20)2.2.6学生考勤情况 (21)2.2.7学生期末评语情况 (21)2.2.8综合素质情况 (22)2.2.9成绩管理 (23)2.2.9.1 班级课程 (23)2.2.9.2 成绩分项 (24)2.2.9.3 成绩录入权限 (24)2.2.9.4 期末成绩、毕业成绩、中考成绩录入 (25)2.3学籍异动申请 (26)2.3.1休学、退学、死亡、其它减少、其它增加、留级和跳级 (26)2.3.2复学 (29)2.3.3换班 (30)2.3.4省内转学 (32)2.3.5跨省转学 (34)2.4毕业信息登记 (37)2.4.1毕业信息登记 (37)2.4.2补录毕业去向 (39)2.5新生注册 (40)2.6招生录取(新生档案迁移) (43)2.6.1招生入学申请 (44)2.6.2学生分班(新生分班) (47)2.6.3学生入库(新生入库) (48)2.7毕业后跨省就学 (48)2.7.1跨省就学申请 (50)2.7.2跨省就学学校审核 (50)2.7.3跨省就学调档 (51)2.7.4跨省就学撤销 (51)三、查询统计 (52)3.1数据查询 (52)3.1.1学生基本信息查询 (52)3.1.2查询条件选择 (53)3.1.3学生名册的导出 (54)3.2数据统计 (55)3.2.1统计条件的选择 (55)3.3学籍变更查询 (57)3.4报表 (57)3.5打印中心 (59)四.系统管理 (60)4.1公告发布 (60)4.2系统设置 (61)4.2.1学生字段修改权限设置 (61)4.2.2学生照片修改权限设置 (62)4.3实用工具 (63)4.3.1名单导入校验 (63)4.3.2成绩录入查看(非普高) (64)4.3.3身份证统计和校验 (64)4.3.4学籍辅号统计和校验 (65)4.3.5照片导入 (65)4.3.6照片导出 (66)4.4用户管理 (68)4.4.1用户组管理 (68)4.4.2用户管理 (70)4.4.3用户权限管理 (71)一.基础信息管理运行学籍管理系统后,首先出现是的系统登录界面。
18位身份证验证--java实现,正则表达式
18位⾝份证验证--java实现,正则表达式简单的正则表达式:(1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/",$id_card)(2)preg_match("/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3}) (\d|X)?$/",$id_card)(3)preg_match("/(^\d{15}$/)|(\d{17}(?:\d|x|X)$/),$id_card)2、复杂并且严格⼀些的验证://这个可以验证15位和18位的⾝份证,并且包含⽣⽇和校验位的验证。
//如果有兴趣,还可以加上⾝份证所在地的验证,就是前6位有些数字合法有些数字不合法。
function isIdCardNo(num){num = num.toUpperCase();//⾝份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后⼀位是校验位,可能为数字或字符X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))){alert('输⼊的⾝份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。
');return false;}//校验位按照ISO 7064:1983.MOD 11-2的规定⽣成,X可以认为是数字10。
//下⾯分别分析出⽣⽇期和校验位var len, re;len = num.length;if (len == 15){re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);var arrSplit = num.match(re);//检查⽣⽇⽇期是否正确var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);var bGoodDay;bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));if (!bGoodDay){alert('输⼊的⾝份证号⾥出⽣⽇期不对!');return false;}else{//将15位⾝份证转成18位//校验位按照ISO 7064:1983.MOD 11-2的规定⽣成,X可以认为是数字10。
JS严格校验身份证号-(严格校验每一位身份号码)
JS严格校验⾝份证号-(严格校验每⼀位⾝份号码)html校验⽰例<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JS严格校验⾝份证号</title></head><body><div align="center"></br></br></br></br></br></br></br></br><div class="form-inline"><input type="text"class="form-control" style="width: 200px;" id="idCard" placeholder="输⼊⾝份证号"><button class="btn btn-default" onclick="check();">校验</button></div></div><footer class="footer"><div class="container"><p class="text-muted" align="center">Author:<a href="" target="_blank">麦⽥技术博客</a></p></div></footer></body><script type="text/javascript">function check(){var idCard = document.getElementById("idCard").value;var flag =IdCardValidate(idCard);if(flag){alert("正确!");}else{alert("您输⼊的⾝份证号格式不正确 ");}}var Wi =[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];// 加权因⼦var ValideCode =[1,0,10,9,8,7,6,5,4,3,2];// ⾝份证验证位值.10代表Xfunction IdCardValidate(idCard){idCard =trim(idCard.replace(/ /g,""));//去掉字符串头尾空格if(idCard.length ==15){return isValidityBrithBy15IdCard(idCard);//进⾏15位⾝份证的验证}else if(idCard.length ==18){var a_idCard = idCard.split("");// 得到⾝份证数组if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){//进⾏18位⾝份证的基本验证和第18位的验证return true;}else{return false;}}else{return false;}}/*** 判断⾝份证号码为18位时最后的验证位是否正确* @param a_idCard ⾝份证号码数组* @return*/function isTrueValidateCodeBy18IdCard(a_idCard){function isTrueValidateCodeBy18IdCard(a_idCard){var sum =0;// 声明加权求和变量if(a_idCard[17].toLowerCase()=='x'){a_idCard[17]=10;// 将最后位为x的验证码替换为10⽅便后续操作}for(var i =0; i <17; i++){sum += Wi[i]* a_idCard[i];// 加权求和}valCodePosition = sum %11;// 得到验证码所位置if(a_idCard[17]== ValideCode[valCodePosition]){return true;}else{return false;}}/*** 验证18位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard 18位书⾝份证字符串* @return*/function isValidityBrithBy18IdCard(idCard18){var year = idCard18.substring(6,10);var month = idCard18.substring(10,12);var day = idCard18.substring(12,14);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day)); // 这⾥⽤getFullYear()获取年份,避免千年⾍问题if(temp_date.getFullYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}/*** 验证15位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard15 15位书⾝份证字符串* @return*/function isValidityBrithBy15IdCard(idCard15){var year = idCard15.substring(6,8);var month = idCard15.substring(8,10);var day = idCard15.substring(10,12);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day)); // 对于⽼⾝份证中的你年龄则不需考虑千年⾍问题⽽使⽤getYear()⽅法if(temp_date.getYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}//去掉字符串头尾空格function trim(str){return str.replace(/(^\s*)|(\s*$)/g,"");}</script></html>js校验核⼼代码引⼊只需要调⽤这个⽅法即可IdCardValidate(“你要验证的⾝份证”); function check(){var idCard = document.getElementById("idCard").value;var flag =IdCardValidate(idCard);var flag =IdCardValidate(idCard);if(flag){alert("正确!");}else{alert("您输⼊的⾝份证号格式不正确 ");}}var Wi =[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];// 加权因⼦var ValideCode =[1,0,10,9,8,7,6,5,4,3,2];// ⾝份证验证位值.10代表Xfunction IdCardValidate(idCard){idCard =trim(idCard.replace(/ /g,""));//去掉字符串头尾空格if(idCard.length ==15){return isValidityBrithBy15IdCard(idCard);//进⾏15位⾝份证的验证}else if(idCard.length ==18){var a_idCard = idCard.split("");// 得到⾝份证数组if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){//进⾏18位⾝份证的基本验证和第18位的验证return true;}else{return false;}}else{return false;}}/*** 判断⾝份证号码为18位时最后的验证位是否正确* @param a_idCard ⾝份证号码数组* @return*/function isTrueValidateCodeBy18IdCard(a_idCard){var sum =0;// 声明加权求和变量if(a_idCard[17].toLowerCase()=='x'){a_idCard[17]=10;// 将最后位为x的验证码替换为10⽅便后续操作}for(var i =0; i <17; i++){sum += Wi[i]* a_idCard[i];// 加权求和}valCodePosition = sum %11;// 得到验证码所位置if(a_idCard[17]== ValideCode[valCodePosition]){return true;}else{return false;}}/*** 验证18位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard 18位书⾝份证字符串* @return*/function isValidityBrithBy18IdCard(idCard18){var year = idCard18.substring(6,10);var month = idCard18.substring(10,12);var day = idCard18.substring(12,14);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day));// 这⾥⽤getFullYear()获取年份,避免千年⾍问题if(temp_date.getFullYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}/*** 验证15位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard15 15位书⾝份证字符串* @return* @return*/function isValidityBrithBy15IdCard(idCard15){var year = idCard15.substring(6,8);var month = idCard15.substring(8,10);var day = idCard15.substring(10,12);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day));// 对于⽼⾝份证中的你年龄则不需考虑千年⾍问题⽽使⽤getYear()⽅法if(temp_date.getYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}//去掉字符串头尾空格function trim(str){return str.replace(/(^\s*)|(\s*$)/g,"");}。
Excel中进行验证身份证号数据有效性的操作技巧
Excel中进行验证身份证号数据有效性的操作技巧
设置单元格的数据有效性,使得输入的身份证号码不出错。
具体该怎么去进行操作的呢?今天,店铺就教大家在Excel中进行验证身份证号数据有效性的操作技巧。
Excel中进行验证身份证号数据有效性的操作步骤
1、先建立下面的表格,要设置蓝色框区域的单元格的数据有效性,使得输入的身份证号码不出错。
2、选中G3-G11的单元格。
3、如下图,1处单击“数据”,2处单击“数据有效性”,出现下列对话框。
4、现在可以设置:允许的地方先“文本长度”;数据选“等于”;长度选“18”,因为身份证号码是18位。
5、点下图1处“出错警告”;就有下列选项,在2处选“停止”;3处输入出错提示的标题”输入错误“;4处输入错误提示信息”亲,身份证数字位数不对。
6=现在我试一下,在蓝色框处填上10位,按回车就有如下提示,成功了。
7、如果是设性别可以参考下图。
8、如果是设出生年月日可以参考下图。
9、如果是设身高可以参翻考下图。
注意事项:
第七步,输入男女中间的逗号是英文状态下。
身份证校验正则
身份证校验正则
身份证校验正则:
1.号码的结构
公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
2.地址码
表示编码对象常住户口所在县(县级市、旗、区)的行政区划代码,按GB/T2260的规定执行。
3.出生日期码
表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
4.顺序码
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
5.校验码
根据前面十七位数字码,按照ISO xxx:xxx.MOD 11-2校验码计算出来的检验码。
身份证测试用例
身份证测试用例
1、正确数据-输入15位身份证号,例如320311770706001 2、正确数据-输入18位身份证号且只有数字,例如130701199310302288 3、正确数据_输入18位身份证号且最后一位为X,例如52030219891209794X 4、错误数据_输入18位身份证号且最后一位为除X外的字母,例如52030219891209794Y 5、错误数据-输入数字少于15位,例如32031177070600 6、错误数据-输入数字多于15位少于18位,例如3203117707060011 7、错误数据-输入数字少于18位,例如52030219891209794 8、错误数据-输入数字多于18位,例如5203021989120979412 9、错误数据-身份证号中含有字母,例如52030219aaaaddd8912 10、错误数据-输入数据中含有特殊字符,例如520@#¥%&×302198912 11、错误数据-输入为空 12、错误数据-输入为空格
ห้องสมุดไป่ตู้
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
22
-
说明23:21..本身表故中受职益业人类如别为依“据法《定中”国指人被保保寿险险人有的限法公定司第》一职顺业序分继类承表人确。定。 第1页,共5页
-
制表日期: 年 月 日
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
说明: 1.身故受益人如为“法定”指被保险人的法定第一顺序继承人。
2.本表中职业类别依据《中国人保寿险有限公司》职业分类表确定。 第3页,共5页
制表日期: 年 月 日
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
-
121
-
122
-
说明: 1.身故受益人如为“法定”指被保险人的法定第一顺序继承人。
2.本表中职业类别依据《中国人保寿险有限公司》职业分类表确定。 第5页,共5页
制表日期: 年 月 日
申请日期:
序号
姓名
2020/4/11
注: 1、该表可实现功能: 通过身份证号导出性别、出生日期、年龄、验证身份证号码正确与否(仅验证18位的)、检查 身份证号是否有重复、人名是否有重复 2、此表仅有白色地方可填写内容,其余地方均不能输入任何内容 3、证件重复校验、姓名重复校验显示为1时,表示没有重复,显示为2时,表示有2个重复,依此类推 4、测算年龄时,请根据实际投保单上填写的申请日期修改相应信息
-
45
-
46
-
47
-
48
-
49
-
50
-
说明: 1.身故受益人如为“法定”指被保险人的法定第一顺序继承人。
2.本表中职业类别依据《中国人保寿险有限公司》职业分类表确定。 第2页,共5页
制表日期: 年 月 日
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
性别 出生日期
证件号码
出生日期
年龄
证件重复 姓名重复 身份证判
校验
校验
断
提示 身份证验证位信息
1
女
19881119 142202198811191749 1988-11-19
31
1
一致
验证信息错误
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
ቤተ መጻሕፍቲ ባይዱ
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
-
说明: 1.身故受益人如为“法定”指被保险人的法定第一顺序继承人。
2.本表中职业类别依据《中国人保寿险有限公司》职业分类表确定。 第4页,共5页
制表日期: 年 月 日
105
-
106
-
107
-