`
gy090028
  • 浏览: 27830 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java 身份证号码验证

    博客分类:
  • Java
 
阅读更多

之前的身份证号码只是做了一些简单的数字、长度,生日等验证

最近碰到一个框架的身份证号码验证有些奇怪,在网上搜了一通,终于找到了规则,

所以在这里记录一下,一遍以后再用,也分享给广大开发者.

 

/**
	 * 验证身份证号码
	 * 
	 * @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身份证号码验证工具

    JAVA身份证号码验证工具,通过身份证号码生成规则,能验证15位、18位身份证号码,必备验证方式

    JAVA身份证号码校验类

    针对身份证号码的校验,以及能自动将身份证从15位升级为18位

    Java身份证号码合法性校验算法,正则表达式。

    最完善的身份证号码合法性校验Java算法,适合Android平台,可以直接拿来在项目中使用,正则表达式。

    java身份证号验证源代码

    在Java编程中,身份证号码验证是一项常见的需求,用于确保输入的身份信息准确无误。身份证号码是由18位数字组成的,包含个人的出生日期、性别、地区等信息,并且具有特定的校验规则。本篇文章将深入讲解如何使用Java...

    身份证验证(JAVA源代码)

    //输入身份证号码 System.out.println("请输入一个身份证号码:"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String s=br.readLine(); //检查长度是否正确

    使用Java正则表达式实现一个简单的身份证号码验证

    ### 使用Java正则表达式实现一个简单的身份证号码验证 #### 一、背景介绍 身份证号码是中国公民的身份标识,由15位或18位数字组成(早期为15位,后改为18位)。其中,第18位是校验码,可能是数字0~9或者大写字母X。...

    JAVA验证身份证号码校验码是否正确.zip

    在Java编程中,验证身份证号码的校验码是否正确是一项常见的任务,特别是在处理个人信息时,如用户注册、信息录入等场景。本教程将深入探讨如何使用Java实现这一功能。 首先,我们需要了解身份证号码的基本结构。...

    java实现的18位身份证格式验证算法

    身份证验证算法是计算机编程中一个常见的实用功能,特别是在处理个人数据和进行实名认证的场景下。在Java中实现18位身份证格式验证涉及到多个步骤,主要包括:校验位计算、出生日期转换以及地区编码验证。下面将详细...

    Java校验身份证号码工具类 ---运行几年了,很靠谱。包含15位身份证校验

    Java校验身份证号码工具类 ---运行几年了,很靠谱。包含15位身份证校验Java校验身份证号码工具类 ---运行几年了,很靠谱。包含15位身份证校验

    java 身份证验证程序

    在Java编程领域,身份证验证程序是一个实用的工具,它能够检查输入的身份证号码是否符合中国的身份证格式,并从中提取出如年龄、性别和籍贯等信息。以下是对这个主题的详细阐述: 身份证号码验证首先需要理解中国...

    Java 身份证号查询

    这个"Java身份证号查询"项目提供了一个解决方案,允许我们通过身份证号码获取个人的出生地、年龄等关键信息。下面将详细阐述实现这一功能所涉及的Java知识点。 首先,中国的身份证号码是由18位数字组成的,前6位...

    身份证号验证Java实现

    将身份证号码前面的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语言编写的身份证号码验证程序。身份证号码是一种唯一的身份识别码,用于识别一个人的身份。java身份证验证代码实现可以用于验证身份证号码的合法性和正确性。 身份证号码的组成...

    一个关于身份证号码验证程序

    你可以使用这些数据来测试你的身份证验证程序,确保其能准确识别有效的身份证号码。 开发这样的验证程序需要掌握基本的编程知识,如变量、条件语句、循环和数组等。常见的编程语言如Python、Java、C#等都可以实现。...

    java写的身份证号码校验类

    ### Java实现的身份证号码校验类详解 #### 一、引言 身份证号码是中国公民的唯一标识符,具有很高的安全性和唯一性。在中国大陆地区,身份证号码由18位数字组成,其中最后一位用于校验整个身份证号码的有效性。...

    java ip,身份证等接口查询所在地

    此外,如果需要验证身份证号码的合法性,可以使用Java编写算法检查其校验码是否正确,这涉及到对身份证号码的数学计算和模运算。 总结来说,Java可以通过第三方库实现IP地址的地理位置查询,同时可以通过身份证号码...

    身份证验证系统 java

    总的来说,"身份证验证系统 java"的实现涵盖了Java编程基础、身份证号码验证逻辑、网络通信、数据解析以及安全机制等多个方面。开发者需要具备扎实的Java编程技能,了解身份证号码的编码规则,掌握HTTP请求及响应...

    java身份证号码识别,适用于web端身份证识别服务器,前端进行身份证号码定位,后端精准处理识别

    Java身份证号码识别技术是计算机视觉领域的一个应用,主要用于在Web端进行身份证信息的自动化处理。在现代互联网服务中,如在线注册、实名认证等场景,身份证信息的准确获取至关重要。本项目提供了一种解决方案,它...

    Java进行身份证正反面信息识别.rar

    本资源“Java进行身份证正反面信息识别.rar”提供了一种利用Java编程语言结合百度提供的库来实现身份证信息读取的方法。下面将详细阐述相关知识点。 1. **身份证信息识别**:身份证信息识别是指通过技术手段自动...

Global site tag (gtag.js) - Google Analytics