Java学习手册:(数据结构与算法-正则表达式)如何判断一个身份证号码是否符合要求?

本文介绍了如何使用Java通过正则表达式判断一个18位身份证号码是否合法,同时解析出对应的出生日期和性别。身份证号码的规则包括:长度18位,末尾可能是数字或字母X,前6位是行政区码,中间8位表示出生日期,第17位决定性别(单数为男,双数为女)。通过算法思想,实现对身份证号码的有效性校验及信息提取。

请判断一个身份证号码是否符合要求,并从中提取出该身份证号码对应的出生日期和性别。

  • 身份证号码长度为18位
  • 最后一位可以是数字也可以是字母X
  • 前六位为行政区码
  • 行政区码后8位为出生日期
  • 第17位为性别编码,单数为男生,双数为女生

算法思想:正则表达式匹配是否符合要求

package com.haobi;
public class Test3 {
	public static void main(String[] args) {
		String number = "410802198709230314";
  		String regex = "[0-9]{17}[0-9(x|X)]";
  		if(number.matches(regex)) {
   			String birthday = number.substring(6,14);
   			System.out.println("出生日期:"+birthday);
   			Character ch = number.charAt(16);
   			int sex = Integer.parseInt(ch.toString());
   			if(sex%2 == 0) {
    			System.out.println("性别:女");
   			}else {
    			System.out.println("性别:男");
   			}
  		}else {
   			System.out.println("身份证格式错误!");
  		}
 	}
}

程序输出结构如下:

出生日期:19870923
性别:男

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值