利用正则表达式判断身份证号
来源:互联网 发布:wps数据透视图 编辑:程序博客网 时间:2024/05/01 22:09
package com.alex.RegExp;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.regex.Matcher;import java.util.regex.Pattern;public class IDnumDistinguish {//判断身份证:要么是15位,要么是18位,最后一位可以为字母,并写程序提出其中的年月日。public static void main(String[] args) {while(true){//提示用户输入身份证号System.out.println("请输入身份证号码:");//通过流处理获得用户身份证号BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));String idNum=null;try {idNum= consoleReader.readLine();} catch (IOException e) {e.printStackTrace();}//定义判别用户身份证号的正则表达式(要么是15位,要么是18位,最后一位可以为字母)Pattern idNumPattern = Pattern.compile("(\\d{14}[0-9a-zA-Z])|(\\d{17}[0-9a-zA-Z])");//通过Pattern获得MatcherMatcher idNumMatcher = idNumPattern.matcher(idNum);//判断用户输入是否为身份证号if(idNumMatcher.matches()){System.out.println("您的出生年月日是:");//如果是,定义正则表达式提取出身份证中的出生日期Pattern birthDatePattern= Pattern.compile("\\d{6}(\\d{4})(\\d{2})(\\d{2}).*");//身份证上的前6位以及出生年月日//通过Pattern获得MatcherMatcher birthDateMather= birthDatePattern.matcher(idNum);//通过Matcher获得用户的出生年月日if(birthDateMather.find()){String year = birthDateMather.group(1);String month = birthDateMather.group(2);String date = birthDateMather.group(3);//输出用户的出生年月日System.out.println(year+"年"+month+"月"+date+"日");}}else{//如果不是,输出信息提示用户System.out.println("您输入的并不是身份证号");}}}}