身份证号码格式验证
来源:互联网 发布:美工收入 编辑:程序博客网 时间:2024/05/16 09:54
/** * 身份证验证 *@param certNo 号码内容 *@return 是否有效 null和"" 都是false */public static boolean isIDCard(String certNo){ if(certNo == null || (certNo.length() != 15 && certNo.length() != 18)) return false; final char[] cs = certNo.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(certNo.substring(0,2)))){ return false; } //校验年份 String year = certNo.length() == 15 ? getIdcardCalendar() + certNo.substring(6,8) :certNo.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 = certNo.length() == 15 ? certNo.substring(8, 10) : certNo.substring(10,12); final int imonth = Integer.parseInt(month); if(imonth <1 || imonth >12){ return false; } //校验天数 String day = certNo.length() ==15 ? certNo.substring(10, 12) : certNo.substring(12, 14); final int iday = Integer.parseInt(day); if(iday < 1 || iday > 31) return false; //校验"校验码" if(certNo.length() == 15) return true; return cs[cs.length -1 ] == PARITYBIT[power % 11];}
0 0
- 身份证号码格式验证
- 验证身份证号码
- 身份证号码验证
- 验证身份证号码
- 身份证号码验证
- 验证身份证号码
- 身份证号码验证
- 验证身份证号码
- 身份证号码验证
- 身份证号码验证
- 验证身份证号码
- 身份证号码验证
- 身份证号码验证 !
- 验证身份证号码
- 验证身份证号码
- 验证身份证号码
- 身份证号码验证
- 身份证号码验证
- oracle表空间的扩展
- Java类型中ParameterizedType,GenericArrayType,TypeVariabl,WildcardType详解
- 跨平台的格式
- duilib动画按钮实现
- parse_str函数的理解
- 身份证号码格式验证
- linux tune2fs命令详解
- CDH 5.5.1安装oozie的坑
- phpcmsV9站点设置对应数据库表位置
- hibernate的懒加载问题
- Leetcode 148. Sort List (Medium) (cpp)
- Redis数据类型(Set)
- [原创]unity3D学习【功能实现】之三:实例化
- php 可变变量实例