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

被折叠的 条评论
为什么被折叠?



