身份证号java正则表达式验证
<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正则表达式验证相关推荐
- JS 身份证号 姓名 正则表达式验证
因项目需要使用身份证号信息补充资料 故新增了此需求 当然呢 还是需要验证一下子的 毕竟咱还是个正经的前端垃圾佬: 既然上代码 咱就得提供一下这个正则表达式了 是这么个回事: 示例代码直接Copy 姓名 ...
- JAVA、PHP统一社会信用代码、身份证号算法解析验证
JAVA.PHP统一社会信用代码.身份证号算法解析验证 这是给某机关单位写系统的时候要验证统一社会信用代码用的是PHP写的方法 java的话也是同理有时间我再把java代码贴出来,这就先贴PHP JA ...
- Java 正则表达式验证小结
为什么80%的码农都做不了架构师?>>> package com.fsti.icop.util.regexp;import java.util.regex.Matcher; i ...
- java 正则表达式验证
package com.fsti.icop.util.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; p ...
- java正则表达式验证_Java中的正则表达式电话号码验证
java正则表达式验证 Validating a phone number using regular expression is tricky because the phone number ca ...
- java 正则表达式 邮编_使用Java正则表达式验证邮政编码
为了使用正则表达式匹配邮政编码,我们在Java中使用matchs方法.java.lang.String.matches()方法返回一个布尔值,该值取决于String与正则表达式的匹配. 声明-java ...
- 判断身份证号是否合法;验证城市区号,生日
判断身份证号是否合法 ; 验证城市区号 , 生日 直接上代码 /*** 判断身份证号是否合法* 验证城市区号;生日* Date:2018年12月29日 * @author D2yml**/ publi ...
- 身份证号的正则表达式{超详细(假的)}
十八位身份证号的正则表达式: /*** 地区号:^[1-9]\\d{5}(六位,不以0开头)* 年份:(19\\d{2})|(20[01]\\d)|(202[012]) 4* 大月及天数:(((0[1 ...
- 手机号 ,邮箱,固定电话js验证,身份证号(正则表达式)
固定电话: var myreg =/^((1[0-9]{10})|(((([0-9]{3}-)?[0-9]{8})|(([0-9]{4}-)?[0-9]{7}))(-[0-9]{1,4})?))$/; ...
最新文章
- 智慧健康,协同发展:清华大学携手天津市共同探索健康医疗大数据
- Spring STS Call Hierarchy 查找不到被调用的信息
- mysql linux版本 rpm_Linux下查看MySQL版本及rpm里有没有MySQL
- Python中的一些“小坑”
- phpMyAdmin开发人员访谈——4个人支持整个项目
- react实现多行文本超出加省略号
- Java描述设计模式(13):迭代器模式
- python下载以后在哪找_Python下载要保存到哪
- MySQL性能半同步复制VS异步复制
- 58 页 PPT 揭示图神经网络研究最新进展
- 网上阅卷系统服务器,网上阅卷系统是什么?
- SQL SERVER 2000数据库置疑处理
- 全能电子地图下载器 离线地图 介绍(支持几十种地图下载) 最新版 3.6 (2015.6.13)
- liunx破解root密码精简版
- Google Earth 嵌入Qt应用程序
- PAT Basic 1055
- cisco MSDP配置指南
- 任天堂(Nintendo)(什么是ps4,什么是ns(switch))
- 【内网穿透笔记】FTP映射出现227 Entering Passive Mode错误命令原因及解决方法
- 汇编语言-用Si和Di实现字符串复制到其他的区域
热门文章
- 1-19 HashMap、IO流递归遍历文件实战
- 通过SSH Client设置规避SSH定时断开
- 利用Word的表格控制编制试卷头
- Android 给App加上屏保功能 类似广告功能的实现。
- 燃烧卡路里——数学模型
- 【Vue.JS】Expected indentation of 0 spaces but found 2 Missing space before function parentheses
- 交互设计师学习之路:第一天 色彩学习
- 处理创建Maven项目时Maven插件无法解析的错误
- android中画布大小设置,如何设置canvas大小?
- 手机端触摸滑动(H5+CSS3+JS+Swiper)