JAVA验证身份证格式及合法性
旅游电子商务中,预订酒店或订购门票时会以身份证作为消费凭证,为了防止客户误填身份证带来不必要麻烦,需要验证码格式及合法性,代码如下:
/**
* 判断身份证格式
*
* @param idNum
* @return
*/
public static boolean isIdNum(String idNum) { // 中国公民身份证格式:长度为15或18位,最后一位可以为字母
Pattern idNumPattern = Pattern.compile("(\\d{14}[0-9a-zA-Z])|(\\d{17}[0-9a-zA-Z])"); // 格式验证
if (!idNumPattern.matcher(idNum).matches())
return false; // 合法性验证 int year = ;
int month = ;
int day = ; if (idNum.length() == ) { // 一代身份证 System.out.println("一代身份证:" + idNum); // 提取身份证上的前6位以及出生年月日
Pattern birthDatePattern = Pattern.compile("\\d{6}(\\d{2})(\\d{2})(\\d{2}).*"); Matcher birthDateMather = birthDatePattern.matcher(idNum); if (birthDateMather.find()) { year = Integer.valueOf("" + birthDateMather.group());
month = Integer.valueOf(birthDateMather.group());
day = Integer.valueOf(birthDateMather.group()); } } else if (idNum.length() == ) { // 二代身份证 System.out.println("二代身份证:" + idNum); // 提取身份证上的前6位以及出生年月日
Pattern birthDatePattern = Pattern.compile("\\d{6}(\\d{4})(\\d{2})(\\d{2}).*"); Matcher birthDateMather = birthDatePattern.matcher(idNum); if (birthDateMather.find()) { year = Integer.valueOf(birthDateMather.group());
month = Integer.valueOf(birthDateMather.group());
day = Integer.valueOf(birthDateMather.group());
} } // 年份判断,100年前至今 Calendar cal = Calendar.getInstance(); // 当前年份
int currentYear = cal.get(Calendar.YEAR); if (year <= currentYear - || year > currentYear)
return false; // 月份判断
if (month < || month > )
return false; // 日期判断 // 计算月份天数 int dayCount = ; switch (month) {
case :
case :
case :
case :
case :
case :
case :
dayCount = ;
break;
case :
// 2月份判断是否为闰年
if ((year % == && year % != ) || (year % == )) {
dayCount = ;
break;
} else {
dayCount = ;
break;
}
case :
case :
case :
case :
dayCount = ;
break;
} System.out.println(String.format("生日:%d年%d月%d日", year, month, day)); System.out.println(month + "月份有:" + dayCount + "天"); if (day < || day > dayCount)
return false; return true;
}
JAVA验证身份证格式及合法性的更多相关文章
- PHP验证身份证格式
互联网公司对身份证验证的需求越来越多,然而普通的小公司是无法对接公安部门的身份认证系统的.几乎都是在网上买一些大的互联网公司的一些认证服务.即使是便宜一些的认证价格也达到了10万次/万元.也就是一角钱 ...
- JAVA验证身份证号码是否合法
package com.chauvet.utils; import java.text.ParseException; import java.text.SimpleDateFormat; impor ...
- Java验证身份证是否合法
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; im ...
- JAVA验证身份证号码是否正确
package com.IdCard; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.D ...
- Java进行身份证格式强校验(准)
最近做了一个系统,涉及到对用户输入的身份证号进行校验,减少脏数据传入后台处理并降低企业验证成本,因此在接入层便对输入信息做格式强校验. 直接附上代码,可直接使用. package hope.ident ...
- java验证身份证号码是否有效源代码 wn25的头像 wn25 23 2015-01-04 20:09 6 基本信息 Java × 1 浏览
原文:http://www.open-open.com/code/view/1420373343171 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 ...
- java验证身份证号码是否有效源代码
原文:http://www.open-open.com/code/view/1420373343171 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 ...
- js验证身份证格式
(function(){ Validate={ data:{ // 加权因子 Wi : [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ...
- java验证身份证合理性
package com.tiantian.util; import java.util.Calendar;import java.util.HashMap;import java.util.Map;i ...
随机推荐
- (一)Maven简介
Maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”,是一个跨平台的项目管理工具.Maven主要服务于基于Java平台的项目构建.依赖管理和项目信息管理. 构建(build)是每一 ...
- Navicat Premium 连接oracle ORA-01017:用户名/口令无效;登陆被拒绝
解决的方法就是将用户名改成system
- windows 上查看一个命令的退出码
windows 上查看一个命令的退出码可以使用下面语句 echo %errorlevel% 例如:windows 上没有ls 命令,所以使用后没有成功,查看退出码为9009 ,非0 使用dir 列出目 ...
- esxi网络中虚拟机的相关操作
一个虚拟机的克隆就是原始虚拟机全部状态的一个备份或镜像.克隆的过程不影响原始虚拟机.而快照指的是虚拟磁盘在某一特定时间点的副本.执行快照将保留虚拟机的状况和数据. 一.实验拓扑图: 目标:克隆虚拟机, ...
- JavaScript -- 时光流逝(五):js中的 Date 对象的方法
JavaScript -- 知识点回顾篇(五):js中的 Date 对象的方法 Date 对象: 用于处理日期和时间. 1. Date对象的方法 <script type="text/ ...
- Linux 小知识翻译 - 「syslog」
这次聊聊「syslog」. 上次聊了「日志」(lgo).这次说起syslog,一看到log(日志)就明白是怎么回事了.syslog是获取系统日志的工具. 很多UINIX系的OS都采用了这个程序,它承担 ...
- C++_调用约束
1.要求 声明定义处调用约定必须相同 int __stdcall add(int a, int b); int __stdcall add(int a, int b) { return a + b; ...
- keepalived 安装篇-官方文档
官方安装文档 http://www.keepalived.org/doc/installing_keepalived.html Installing Keepalived Install keepal ...
- WPF自定义控件(四)の自定义控件
在实际工作中,WPF提供的控件并不能完全满足不同的设计需求.这时,需要我们设计自定义控件. 这里LZ总结一些自己的思路,特性如下: Coupling UITemplate Behaviour Func ...
- spring Environment
Environment 环境在容器中是一个抽象的集合,是指应用环境的2个方面: profiles和 properties. profile 配置是一个被命名的,bean定义的逻辑组,这些bean只有在 ...