之前的身份证号码只是做了一些简单的数字、长度,生日等验证
最近碰到一个框架的身份证号码验证有些奇怪,在网上搜了一通,终于找到了规则,
所以在这里记录一下,一遍以后再用,也分享给广大开发者.
/** * 验证身份证号码 * * @param papersNumber * 身份证号码 */ public static boolean checkPapersNumber(String papersNumber) { if (StringUtils.isBlank(papersNumber)) { return false; } else if (papersNumber.length() < 15) { return false; } String dt = papersNumber.substring(6, 14); if (!checkDate(dt, "yyyyMMdd")) { return false; } // 18位身份证号码验证 if (papersNumber.length() == 18) { int a, b, c = 0; String d = ""; if (!checkNumber(papersNumber.substring(0, 17))) { return false; } a = Integer.parseInt(papersNumber.substring(0, 1)) * 7 + Integer.parseInt(papersNumber.substring(1, 2)) * 9 + Integer.parseInt(papersNumber.substring(2, 3)) * 10; a = a + Integer.parseInt(papersNumber.substring(3, 4)) * 5 + Integer.parseInt(papersNumber.substring(4, 5)) * 8 + Integer.parseInt(papersNumber.substring(5, 6)) * 4; a = a + Integer.parseInt(papersNumber.substring(6, 7)) * 2 + Integer.parseInt(papersNumber.substring(7, 8)) * 1 + Integer.parseInt(papersNumber.substring(8, 9)) * 6; a = a + Integer.parseInt(papersNumber.substring(9, 10)) * 3 + Integer.parseInt(papersNumber.substring(10, 11)) * 7 + Integer.parseInt(papersNumber.substring(11, 12)) * 9; a = a + Integer.parseInt(papersNumber.substring(12, 13)) * 10 + Integer.parseInt(papersNumber.substring(13, 14)) * 5 + Integer.parseInt(papersNumber.substring(14, 15)) * 8; a = a + Integer.parseInt(papersNumber.substring(15, 16)) * 4 + Integer.parseInt(papersNumber.substring(16, 17)) * 2; b = a % 11; if (b == 2) // 最后一位为校验位 { d = papersNumber.substring(17, 18).toUpperCase(); // 转为大写X } else { c = Integer.parseInt(papersNumber.substring(17, 18)); } String JYM = "10X98765432"; String m = JYM.substring(b, b + 1); if ("X".equals(m)) { if (!"X".equals(d)) { //System.out.println("身份证号码校验位错:最后一位应该为:X"); return false; } } else { if (c != Integer.parseInt(m)) { //System.out.println("身份证好号码校验位错:最后一位应该为:" + m); return false; } } } else { // 15位身份证号 if (!checkNumber(papersNumber)) { //System.out.println("身份证号码错误,前15位不能含有英文字母!"); return false; } } return true; } /** * 检测日期格式 * * @param date * 待检测日期 * @param format * 格式字符串 * @return */ public static boolean checkDate(String date, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); try { sdf.parse(date); } catch (ParseException e) { return false; } return true; } /** * 验证数字格式 * * @param num * @return */ public static boolean checkNumber(String num) { String regex = "^\\d+$"; Pattern patten = Pattern.compile(regex); Matcher m = patten.matcher(num); boolean b = m.matches(); if (b) { return true; } return false; }
相关推荐
JAVA身份证号码验证工具,通过身份证号码生成规则,能验证15位、18位身份证号码,必备验证方式
针对身份证号码的校验,以及能自动将身份证从15位升级为18位
最完善的身份证号码合法性校验Java算法,适合Android平台,可以直接拿来在项目中使用,正则表达式。
在Java编程中,身份证号码验证是一项常见的需求,用于确保输入的身份信息准确无误。身份证号码是由18位数字组成的,包含个人的出生日期、性别、地区等信息,并且具有特定的校验规则。本篇文章将深入讲解如何使用Java...
//输入身份证号码 System.out.println("请输入一个身份证号码:"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String s=br.readLine(); //检查长度是否正确
### 使用Java正则表达式实现一个简单的身份证号码验证 #### 一、背景介绍 身份证号码是中国公民的身份标识,由15位或18位数字组成(早期为15位,后改为18位)。其中,第18位是校验码,可能是数字0~9或者大写字母X。...
在Java编程中,验证身份证号码的校验码是否正确是一项常见的任务,特别是在处理个人信息时,如用户注册、信息录入等场景。本教程将深入探讨如何使用Java实现这一功能。 首先,我们需要了解身份证号码的基本结构。...
身份证验证算法是计算机编程中一个常见的实用功能,特别是在处理个人数据和进行实名认证的场景下。在Java中实现18位身份证格式验证涉及到多个步骤,主要包括:校验位计算、出生日期转换以及地区编码验证。下面将详细...
Java校验身份证号码工具类 ---运行几年了,很靠谱。包含15位身份证校验Java校验身份证号码工具类 ---运行几年了,很靠谱。包含15位身份证校验
在Java编程领域,身份证验证程序是一个实用的工具,它能够检查输入的身份证号码是否符合中国的身份证格式,并从中提取出如年龄、性别和籍贯等信息。以下是对这个主题的详细阐述: 身份证号码验证首先需要理解中国...
这个"Java身份证号查询"项目提供了一个解决方案,允许我们通过身份证号码获取个人的出生地、年龄等关键信息。下面将详细阐述实现这一功能所涉及的Java知识点。 首先,中国的身份证号码是由18位数字组成的,前6位...
将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 将这17位数字和系数相乘的结果相加。 用加出来和除以11,取余数。 余数...
通常,会使用正则表达式来验证身份证号码的格式,然后通过上述规则提取性别、出生日期和籍贯信息。例如,可以使用Python编程语言,通过字符串操作函数实现这一功能: ```python import re def extract_info(id_...
java身份证验证代码实现是指使用java语言编写的身份证号码验证程序。身份证号码是一种唯一的身份识别码,用于识别一个人的身份。java身份证验证代码实现可以用于验证身份证号码的合法性和正确性。 身份证号码的组成...
你可以使用这些数据来测试你的身份证验证程序,确保其能准确识别有效的身份证号码。 开发这样的验证程序需要掌握基本的编程知识,如变量、条件语句、循环和数组等。常见的编程语言如Python、Java、C#等都可以实现。...
### Java实现的身份证号码校验类详解 #### 一、引言 身份证号码是中国公民的唯一标识符,具有很高的安全性和唯一性。在中国大陆地区,身份证号码由18位数字组成,其中最后一位用于校验整个身份证号码的有效性。...
此外,如果需要验证身份证号码的合法性,可以使用Java编写算法检查其校验码是否正确,这涉及到对身份证号码的数学计算和模运算。 总结来说,Java可以通过第三方库实现IP地址的地理位置查询,同时可以通过身份证号码...
总的来说,"身份证验证系统 java"的实现涵盖了Java编程基础、身份证号码验证逻辑、网络通信、数据解析以及安全机制等多个方面。开发者需要具备扎实的Java编程技能,了解身份证号码的编码规则,掌握HTTP请求及响应...
Java身份证号码识别技术是计算机视觉领域的一个应用,主要用于在Web端进行身份证信息的自动化处理。在现代互联网服务中,如在线注册、实名认证等场景,身份证信息的准确获取至关重要。本项目提供了一种解决方案,它...
本资源“Java进行身份证正反面信息识别.rar”提供了一种利用Java编程语言结合百度提供的库来实现身份证信息读取的方法。下面将详细阐述相关知识点。 1. **身份证信息识别**:身份证信息识别是指通过技术手段自动...