java 身份证号码正则表达式校验
/*** 身份证号码验证*/
public class IdentityUtils {public static boolean isIDNumber(String IDNumber) {if (IDNumber == null || "".equals(IDNumber)) {return false;}// 定义判别用户身份证号的正则表达式(15位或者18位,最后一位可以为字母)String regularExpression = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|" +"(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";//假设18位身份证号码:41000119910101123X 410001 19910101 123X//^开头//[1-9] 第一位1-9中的一个 4//\\d{5} 五位数字 10001(前六位省市县地区)//(18|19|20) 19(现阶段可能取值范围18xx-20xx年)//\\d{2} 91(年份)//((0[1-9])|(10|11|12)) 01(月份)//(([0-2][1-9])|10|20|30|31)01(日期)//\\d{3} 三位数字 123(第十七位奇数代表男,偶数代表女)//[0-9Xx] 0123456789Xx其中的一个 X(第十八位为校验值)//$结尾//假设15位身份证号码:410001910101123 410001 910101 123//^开头//[1-9] 第一位1-9中的一个 4//\\d{5} 五位数字 10001(前六位省市县地区)//\\d{2} 91(年份)//((0[1-9])|(10|11|12)) 01(月份)//(([0-2][1-9])|10|20|30|31)01(日期)//\\d{3} 三位数字 123(第十五位奇数代表男,偶数代表女),15位身份证不含X//$结尾boolean matches = IDNumber.matches(regularExpression);//判断第18位校验值if (matches) {if (IDNumber.length() == 18) {try {char[] charArray = IDNumber.toCharArray();//前十七位加权因子int[] idCardWi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//这是除以11后,可能产生的11位余数对应的验证码String[] idCardY = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};int sum = 0;for (int i = 0; i < idCardWi.length; i++) {int current = Integer.parseInt(String.valueOf(charArray[i]));int count = current * idCardWi[i];sum += count;}char idCardLast = charArray[17];int idCardMod = sum % 11;if (idCardY[idCardMod].toUpperCase().equals(String.valueOf(idCardLast).toUpperCase())) {return true;} else {return false;}} catch (Exception e) {e.printStackTrace();return false;}}}return matches;}
}
java 身份证号码正则表达式校验相关推荐
- java身份证号码正则表达式校验(含最后一位的校验值规则)
这里是python版本的: https://yanwenjing.blog.csdn.net/article/details/108210623 请仔细阅读注释 点击这里下载判断身份证号码的小工具 身 ...
- python身份证号码正则表达式校验(含最后一位的校验值规则)
这里是java版本的:https://yanwenjing.blog.csdn.net/article/details/76066985 请仔细阅读注释 点击这里下载判断身份证号码的小工具 身份证号码 ...
- 15位、18位身份证号码正则表达式
身份证正则表达式 在项目中遇到身份证号码验证,百度了一些资料,太简单的和太复杂的pass,综合了一些案例,取长补短,形成了个折中版本的,正则表达式如下: var reg =/(^[1-9]\d{5}( ...
- iOS之身份证号码全校验与校验位自动补全
在项目中进行身份证号码的校验,首先有必要了解一下居民身份证的基本构成: 长度必须是18位,前17位必须是数字,第十八位可以是数字或X: 前两位必须是以下情形中的一种:11.12.13.14.15.21 ...
- Python编程100例--身份证号码的校验码
身份证号码的校验码 任务描述: 身份证号码是由17位数字本体码和1位数字校验码组成,具有特定含义: 前6位是省市县行政区划分代码:第7-14位为出生年月日:第15-17位为登记流水号,其中第17位为偶 ...
- 如何对身份证号码进行校验?
每个人的身份证号码都都是一串有特别意义的数字,如代表出生地,出生日,性别等,那么对于行政上的一些工作,核对身份证是不是输入有误,身份证是否造假,也是可以通过身份证上的号码数字进行核对检查. 先看一下原 ...
- 最新js验证手机号码、电话号码、身份证号码正则表达式代码
js验证手机号码.电话号码.身份证号码正则表达式 手机号码正则表达式验证 固定电话号码正则表达式 身份证正则 手机号码正则表达式验证 function checkPhone(){ var phone ...
- C语言——实验一:查验身份证(身份证号码的校验码)
前言 为什么我这个萌新要来写这篇文章?事情还要从上周三说起. 在上周三的程序设计基础课上,我们老师给我们全班同学布置了一项题为<实验一:查验身份证>的实验作业,这也是我第一次接触到实验作业 ...
- Java:15位或18位居民身份证号码通用校验(正则表达式、日期格式、末尾校验码)
身份证号码校验,正则表达式校验.日期格式校验.18位身份证末尾校验码校验 前六位省市县号码变更频繁,这里就不做校验 import java.text.ParseException; import ja ...
最新文章
- KDD Cup 2021城市大脑赛题解析!报名倒计时3天
- 08Factory Method(工厂方法)模式
- 移动端1px像素的设置?
- DOM中window的navigate()重新导航到制定网址
- 带入gRPC:gRPC Streaming, Client and Server
- TCP/IP协议读书笔记(1)
- python批量合并csv_如何在Python中通过多个列合并两个CSV文件
- 1910140408安装win版
- **踩坑之通用Mapper中 Mapper.selectByExample(example)**的返回
- k8s token 过期了怎么加入worker 节点
- protel 99se 层次原理图的切换
- kotlin的Viewpage2+Fragment的简单使用(setUserVisibleHint方法过时)
- jumpserver 添加Windows主机
- 弗吉尼亚大学计算机就业如何,假设你是新华中学的学生李华,高中毕业后想到美国弗吉尼亚大学(University of Virginia)计算机专业深造...
- 65536个连接”误解
- 只要1美元!教你给MacBook装上触摸屏
- 谈谈SVM和SVR的区别
- 【笔记本】解决键盘粘键 -/- 按键自动输入
- 论文阅读:Hierarchical Attention Transfer Network for Cross-Domain Sentiment Classification
- Oracle 从垃圾箱中恢复数据以及清空垃圾箱