程序只是对输入字符做简单正则校验,日期校验不支持校验闰年平年29日、大小月31日,不支持末尾校验位校验

import java.text.ParseException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/* * 简单的身份证正则表达式校验
*/
public class CheckResidentIdentityCard1 {/** * 方法:判断15位旧居民身份证及18位新居民身份证是否符合规范,利用正则表达式方法* */ private static boolean regexCheck(String cardNo) { if(null == cardNo)return false;  cardNo = cardNo.trim();if (15 == cardNo.length()||18 == cardNo.length()){/*        15位旧居民身份证:*      "\\d{8}"                  1~6位分别代表省市县,这里不取字典表校验,只校验是否数字。*                                 7~8位代表年份后两位数字*        "(0[1-9]|1[012])"          9~10位代表月份,01~12月*       "(0[1-9]|[12]\\d|3[01])"  11~12位代表日期,1~31日*        "\\d{3}"                  13~15位为三位顺序号*       *       18位新居民身份证:*      "\\d{6}"                  1~6位分别代表省市县,这里不取字典表校验,只校验是否数字。*       "(18|19|20)\\d{2}"        7~10位代表年份,前两位18、19、20即19世纪、20世纪、21世纪,后两位数字。*      中国寿星之首:阿丽米罕·色依提,女,1886年6月25日出生于新疆疏勒县,现年134岁,身份证起始日期在19世纪*        "(0[1-9]|1[012])"          11~12位代表月份,01~12月*      "(0[1-9]|[12]\\d|3[01])"  13~14位代表日期,1~31日*        "\\d{3}"                  15~17位为三位顺序号*       "(\\d|X|x)"               18位为校验位数字,允许字母x和X* *         正则表达式合并为:*       ^(\\d{6}(18|19|20)\\d{2}(0[1-9]|1[012])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X|x))|(\\d{8}(0[1-9]|1[012])(0[1-9]|[12]\\d|3[01])\\d{3})$* */Pattern pattern = Pattern.compile("^(\\d{6}(18|19|20)\\d{2}(0[1-9]|1[012])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X|x))|(\\d{8}(0[1-9]|1[012])(0[1-9]|[12]\\d|3[01])\\d{3})$");   Matcher m = pattern.matcher(cardNo); return (m.matches())?true:false;}else{return false; }}public static void main(String[] args) throws ParseException {//数据测试String str0="000000180001011231";System.out.println(str0+":"+regexCheck(str0));str0="00000x190001011231";System.out.println(str0+":"+regexCheck(str0));str0="000000210001011231";System.out.println(str0+":"+regexCheck(str0));str0="000000191301011231";System.out.println(str0+":"+regexCheck(str0));str0="00000019x301011231";System.out.println(str0+":"+regexCheck(str0));str0="000000190013011231";System.out.println(str0+":"+regexCheck(str0));str0="000000190012131231";System.out.println(str0+":"+regexCheck(str0));str0="000000190012211231";System.out.println(str0+":"+regexCheck(str0));str0="00000019001221x231";System.out.println(str0+":"+regexCheck(str0));str0="00000019000101123x";System.out.println(str0+":"+regexCheck(str0));str0="00000019000101123X";  System.out.println(str0+":"+regexCheck(str0));str0="000000000101123";        System.out.println(str0+":"+regexCheck(str0));str0="00000000010112x";        System.out.println(str0+":"+regexCheck(str0));str0="000000000132123";        System.out.println(str0+":"+regexCheck(str0));str0="000000001322123";        System.out.println(str0+":"+regexCheck(str0));str0="";       System.out.println(str0+":"+regexCheck(str0));str0=null;       System.out.println(str0+":"+regexCheck(str0));str0="123";        System.out.println(str0+":"+regexCheck(str0));str0="0000001900010112301";        System.out.println(str0+":"+regexCheck(str0));  str0="0000001900010112301";      System.out.println(str0+":"+regexCheck(str0));  str0="0000001900010112301";      System.out.println(str0+":"+regexCheck(str0));  str0="0000001900010112301";      System.out.println(str0+":"+regexCheck(str0));  str0="340404199710180411";       System.out.println(str0+":"+regexCheck(str0));      }
}

执行main()方法运行结果

000000180001011231:true
00000x190001011231:false
000000210001011231:false
000000191301011231:true
00000019x301011231:false
000000190013011231:false
000000190012131231:true
000000190012211231:true
00000019001221x231:false
00000019000101123x:true
00000019000101123X:true
000000000101123:true
00000000010112x:false
000000000132123:false
000000001322123:false
:false
null:false
123:false
0000001900010112301:false
0000001900010112301:false
0000001900010112301:false
0000001900010112301:false
340404199710180411:true

后续可以添加身份证末尾校验位校验,省份数据字典校验,出生日期正确校验等

Java:15位或18位居民身份证号码简单校验(正则表达式)相关推荐

  1. Java:15位或18位居民身份证号码通用校验(正则表达式、日期格式、末尾校验码)

    身份证号码校验,正则表达式校验.日期格式校验.18位身份证末尾校验码校验 前六位省市县号码变更频繁,这里就不做校验 import java.text.ParseException; import ja ...

  2. 15位或18位长度身份证号码JS验证

    免责声明:身份证号为随机组合而成,不会涉及任何隐私泄密问题,也非现实生活中真实的身份证号码:身份证号码所属年龄均为18岁以上,均已通过校验. var IdNum1 = "3205831986 ...

  3. 验证(15位或者18位)身份证号码的正确正则表达式

    我们在开发页面的过程中难免会遇到一些表单验证,以下就对身份证号码进行验证,在开发过程中做的简单笔记: 身份证号码: 18位(xxxxxx yy MM dd xxxx) 15位(xxxxxx yy MM ...

  4. 身份证验证信息15位或18位

    一.身份证号码的结构和表示形式 1.号码的结构 根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从 ...

  5. 输入一个18位的身份证号码,从中提取出生日期

    输入一个18位的身份证号码,从中提取出生日期,并以"出生日期是年月*日".样的格式输出 a=input("请输入18位身份证号码") n=a[6:10] m=a ...

  6. 请写代码校验第二代身份证号码有效性。程序接收一个18位的身份证号码和性别,根据以下规则输出号码是有效还是无效。

    请写代码校验第二代身份证号码有效性.程序接收一个18位的身份证号码和性别,根据以下规则输出号码是有效还是无效. 第二代身份证号组成规则: a) 身份证号码(18位)= 地址码(6)+ 出生日期码(8) ...

  7. Oracle 通过15位或18位身份证号码计算年龄、出生年月日、性别

    15位身份证号码各位的含义: 地址码(前六位数):表示身份证编码对象常住户口所在省份.地市,以及县(市.旗.区)的行政区划代码,1-2位数字表示所在地省.自治区.直辖市代码,第3.4位数字表示所在地地 ...

  8. 15位或18位身份证验证

    c#实现的18位身份证格式验证算法 18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999<公民身份号码>中做了明确的规定. GB11643-1999< ...

  9. 18位公民身份证号码的编排规则

    18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999<公民身份号码>中做了明确规定. GB11643-1999<公民身份号码>为GB11643 ...

  10. java,javascript对18位身份证格式的验证算法

    参考资料  1 java实现的18位身份证格式验证算法  http://fanqiang.chinaunix.net/program/java/2006-06-22/4639.shtml   原码中有 ...

最新文章

  1. vimrc 配置 史上最牛
  2. mysql 存储过程乱码的问题
  3. 十大经典排序算法之希尔排序及其优化
  4. 在Java中对Singleton类进行双重检查锁定
  5. Redhat7.3安装配置Telnet详细教程
  6. python编写装饰器_我也来写一下python装饰器
  7. C#中A a=new B()的意义
  8. 电商美工必看|Banner设计没灵感?传说中大气的画册风格给你灵感
  9. 重温马尔科夫随机过程
  10. tail 查看文件末尾n行、日志持续追踪
  11. Photoshop使用十大技巧
  12. 更改Anaconda下载源,提高下载速度
  13. java 传参数报文给and_技术岛-技术改变生活
  14. Java动态性——反射机制学习笔记
  15. android开发中磁场传感器,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...
  16. 星际蜗牛矿难机,j1900 4核+4G内存+16Gssd硬盘,群晖6.1,SSD引导成功
  17. vue页面特效:雨滴、流星
  18. Win7 UltraIso刻录时报错解决办法
  19. 称重软件这几个模块你了解吗
  20. 【职业规划】阿里校园招聘对java本科生的要求

热门文章

  1. goodFeaturesToTrack——Shi-Tomasi角点检测
  2. SOLIDWORKS+CAD+UG软件培训 三款电脑学习软件
  3. 【高等数学】方差的集合意义
  4. 【读书笔记】《Web全栈工程师的自我修养》
  5. c c python的区别_python版本的区别 Cpython Jython pypy ?
  6. 高速公路计算机网络安全,计算机网络安全技术在高速公路收费网络的应用
  7. CE游戏修改器制作游戏修改器傻瓜教程
  8. 另辟蹊径--极简Swifty路由
  9. 关于Tampermonkey(油猴)的安装和使用的小白教程
  10. 二层、三层与四层交换机