<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

二话不说,直接上代码

/*** 18位身份证校验,粗略的校验* @author lyl* @param idCard* @return*/public static boolean is18ByteIdCard(String idCard){Pattern pattern1 = Pattern.compile("^(\\d{6})(19|20)(\\d{2})(1[0-2]|0[1-9])(0[1-9]|[1-2][0-9]|3[0-1])(\\d{3})(\\d|X|x)?$"); //粗略的校验Matcher matcher = pattern1.matcher(idCard);if(matcher.matches()){return true;}return false;}/*** 18位身份证校验,比较严格校验* @author lyl* @param idCard* @return*/public static boolean is18ByteIdCardComplex(String idCard){Pattern pattern1 = Pattern.compile("^(\\d{6})(19|20)(\\d{2})(1[0-2]|0[1-9])(0[1-9]|[1-2][0-9]|3[0-1])(\\d{3})(\\d|X|x)?$"); Matcher matcher = pattern1.matcher(idCard);int[] prefix = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};int[] suffix = new int[]{ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 };if(matcher.matches()){Map<String, String> cityMap = initCityMap();if(cityMap.get(idCard.substring(0,2)) == null ){return false;}int idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和for(int i=0;i<17;i++){idCardWiSum+=Integer.valueOf(idCard.substring(i,i+1))*prefix[i];}int idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置String idCardLast=idCard.substring(17);//得到最后一位身份证号码//如果等于2,则说明校验码是10,身份证号码最后一位应该是Xif(idCardMod==2){if(idCardLast.equalsIgnoreCase("x")){return true;}else{return false;}}else{//用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码if(idCardLast.equals(suffix[idCardMod]+"")){return true;}else{return false;}}}return false;}private static Map<String, String> initCityMap(){Map<String, String> cityMap = new HashMap<String, String>();cityMap.put("11", "北京");cityMap.put("12", "天津");cityMap.put("13", "河北");cityMap.put("14", "山西");cityMap.put("15", "内蒙古");cityMap.put("21", "辽宁");cityMap.put("22", "吉林");cityMap.put("23", "黑龙江");cityMap.put("31", "上海");cityMap.put("32", "江苏");cityMap.put("33", "浙江");cityMap.put("34", "安徽");cityMap.put("35", "福建");cityMap.put("36", "江西");cityMap.put("37", "山东");cityMap.put("41", "河南");cityMap.put("42", "湖北");cityMap.put("43", "湖南");cityMap.put("44", "广东");cityMap.put("45", "广西");cityMap.put("46", "海南");cityMap.put("50", "重庆");cityMap.put("51", "四川");cityMap.put("52", "贵州");cityMap.put("53", "云南");cityMap.put("54", "西藏");cityMap.put("61", "陕西");cityMap.put("62", "甘肃");cityMap.put("63", "青海");cityMap.put("64", "宁夏");cityMap.put("65", "新疆");//          cityMap.put("71", "台湾");
//          cityMap.put("81", "香港");
//          cityMap.put("82", "澳门");
//          cityMap.put("91", "国外");
//          System.out.println(cityMap.keySet().size());return cityMap;}

身份证号java正则表达式验证相关推荐

  1. JS 身份证号 姓名 正则表达式验证

    因项目需要使用身份证号信息补充资料 故新增了此需求 当然呢 还是需要验证一下子的 毕竟咱还是个正经的前端垃圾佬: 既然上代码 咱就得提供一下这个正则表达式了 是这么个回事: 示例代码直接Copy 姓名 ...

  2. JAVA、PHP统一社会信用代码、身份证号算法解析验证

    JAVA.PHP统一社会信用代码.身份证号算法解析验证 这是给某机关单位写系统的时候要验证统一社会信用代码用的是PHP写的方法 java的话也是同理有时间我再把java代码贴出来,这就先贴PHP JA ...

  3. Java 正则表达式验证小结

    为什么80%的码农都做不了架构师?>>>    package com.fsti.icop.util.regexp;import java.util.regex.Matcher; i ...

  4. java 正则表达式验证

    package com.fsti.icop.util.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; p ...

  5. java正则表达式验证_Java中的正则表达式电话号码验证

    java正则表达式验证 Validating a phone number using regular expression is tricky because the phone number ca ...

  6. java 正则表达式 邮编_使用Java正则表达式验证邮政编码

    为了使用正则表达式匹配邮政编码,我们在Java中使用matchs方法.java.lang.String.matches()方法返回一个布尔值,该值取决于String与正则表达式的匹配. 声明-java ...

  7. 判断身份证号是否合法;验证城市区号,生日

    判断身份证号是否合法 ; 验证城市区号 , 生日 直接上代码 /*** 判断身份证号是否合法* 验证城市区号;生日* Date:2018年12月29日 * @author D2yml**/ publi ...

  8. 身份证号的正则表达式{超详细(假的)}

    十八位身份证号的正则表达式: /*** 地区号:^[1-9]\\d{5}(六位,不以0开头)* 年份:(19\\d{2})|(20[01]\\d)|(202[012]) 4* 大月及天数:(((0[1 ...

  9. 手机号 ,邮箱,固定电话js验证,身份证号(正则表达式)

    固定电话: var myreg =/^((1[0-9]{10})|(((([0-9]{3}-)?[0-9]{8})|(([0-9]{4}-)?[0-9]{7}))(-[0-9]{1,4})?))$/; ...

最新文章

  1. 智慧健康,协同发展:清华大学携手天津市共同探索健康医疗大数据
  2. Spring STS Call Hierarchy 查找不到被调用的信息
  3. mysql linux版本 rpm_Linux下查看MySQL版本及rpm里有没有MySQL
  4. Python中的一些“小坑”
  5. phpMyAdmin开发人员访谈——4个人支持整个项目
  6. react实现多行文本超出加省略号
  7. Java描述设计模式(13):迭代器模式
  8. python下载以后在哪找_Python下载要保存到哪
  9. MySQL性能半同步复制VS异步复制
  10. 58 页 PPT 揭示图神经网络研究最新进展
  11. 网上阅卷系统服务器,网上阅卷系统是什么?
  12. SQL SERVER 2000数据库置疑处理
  13. 全能电子地图下载器 离线地图 介绍(支持几十种地图下载) 最新版 3.6 (2015.6.13)
  14. liunx破解root密码精简版
  15. Google Earth 嵌入Qt应用程序
  16. PAT Basic 1055
  17. cisco MSDP配置指南
  18. 任天堂(Nintendo)(什么是ps4,什么是ns(switch))
  19. 【内网穿透笔记】FTP映射出现227 Entering Passive Mode错误命令原因及解决方法
  20. 汇编语言-用Si和Di实现字符串复制到其他的区域

热门文章

  1. 1-19 HashMap、IO流递归遍历文件实战
  2. 通过SSH Client设置规避SSH定时断开
  3. 利用Word的表格控制编制试卷头
  4. Android 给App加上屏保功能 类似广告功能的实现。
  5. 燃烧卡路里——数学模型
  6. 【Vue.JS】Expected indentation of 0 spaces but found 2 Missing space before function parentheses
  7. 交互设计师学习之路:第一天 色彩学习
  8. 处理创建Maven项目时Maven插件无法解析的错误
  9. android中画布大小设置,如何设置canvas大小?
  10. 手机端触摸滑动(H5+CSS3+JS+Swiper)