博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断身份证:要么是15位,要么是18位,最后一位可以为字母,并写程序提出其中的年月日...
阅读量:5260 次
发布时间:2019-06-14

本文共 1825 字,大约阅读时间需要 6 分钟。

我们可以用正则表达式来定义复杂的字符串格式,(\d{17}[0-9a-zA-Z]|\d{14}[0-9a-zA-Z])可以用来判断是否为合法的15位或18位身份证号码。

因为15位和18位的身份证号码都是从7位到第12位为身份证为日期类型。这样我们可以设计出更精确的正则模式,使身份证号的日期合法,这样我们的正则模式可以进一步将日期部分的正则修改为[12][0-9]{3}[01][0-9][123][0-9],当然可以更精确的设置日期。

在jdk的java.util.Regex包中有实现正则的类,Pattern和Matcher。以下是实现代码:

View Code
1 package com.aspire.test; 2  3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5  6 public class Test { 7     public static void main(String[] args) { 8          9         // 测试是否为合法的身份证号码10         String[] strs = { "130681198712092019", "13068119871209201x",11                 "13068119871209201", "123456789012345", "12345678901234x",12                 "1234567890123" };13         Pattern p1 = Pattern.compile("(\\d{17}[0-9a-zA-Z]|\\d{14}[0-9a-zA-Z])");14         for (int i = 0; i < strs.length; i++) {15             Matcher matcher = p1.matcher(strs[i]);16             System.out.println(strs[i] + ":" + matcher.matches());17         }18 19         Pattern p2 = Pattern.compile("\\d{6}(\\d{8}).*"); // 用于提取出生日字符串20         Pattern p3 = Pattern.compile("(\\d{4})(\\d{2})(\\d{2})");// 用于将生日字符串进行分解为年月日21         for (int i = 0; i < strs.length; i++) {22             Matcher matcher = p2.matcher(strs[i]);23             boolean b = matcher.find();24             if (b) {25                 String s = matcher.group(1);26                 System.out.println(s);27                 Matcher matcher2 = p3.matcher(s);28                 if (matcher2.find()) {29                     System.out30                             .println("生日为" + matcher2.group(1) + "年"31                                     + matcher2.group(2) + "月"32                                     + matcher2.group(3) + "日");33                 }34             }35 36         }37     }38 }

 

转载于:https://www.cnblogs.com/Jeanferly/archive/2012/08/08/2628411.html

你可能感兴趣的文章
玩转阿里云 轻量应用服务器 遇到的一些事(一)
查看>>
1 创建ROS工作空间
查看>>
Pillar
查看>>
二维数组
查看>>
C#枚举类型转换
查看>>
[USACO16OPEN]248
查看>>
Windows下配置Nginx代理Django
查看>>
使用Jmeter进行http接口性能测试
查看>>
经典排序算法之归并排序
查看>>
希尔排序(缩小增量排序)
查看>>
GCC的基本使用
查看>>
Attitude Towards Friends
查看>>
Oracle开发 之 主-外键约束FK及约束的修改
查看>>
MongoDB复制集原理、环境配置及基本测试详解
查看>>
Winform传统DataGridView和DevExpress控件的GridControl两者表头全选功能的实现
查看>>
最大生成树
查看>>
图解LAJP在Windows系统上的安装配置
查看>>
C++ Primer Plus第6版18个重点笔记
查看>>
[转]同步对象Event的用法
查看>>
JS_基本语法
查看>>