从身份证号中提取身份证信息java
时间: 2024-05-13 18:15:53 浏览: 7
可以使用 Java 的正则表达式来从身份证号中提取身份证信息。以下是一个示例代码,可以从身份证号中提取出生日期、性别、区域等信息:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class IdCardUtil {
private static final Pattern ID_CARD_PATTERN = Pattern.compile(
"^([1-9]\\d{5})" + //区域代码
"(\\d{4})(\\d{2})(\\d{2})" + //出生年月日
"(\\d{3})([0-9xX])$"); //顺序码和校验码
private static final String[] AREA_CODE = new String[]{
"110000", "110100", "110101", //省市区信息省略...
//省市区信息省略...
"820000", "820100", "820200"}; //港澳地区信息
/**
* 根据身份证号获取生日
*/
public static String getBirthday(String idCard) {
Matcher matcher = ID_CARD_PATTERN.matcher(idCard);
if (matcher.matches()) {
String year = matcher.group(2);
String month = matcher.group(3);
String day = matcher.group(4);
return year + "-" + month + "-" + day;
}
return null;
}
/**
* 根据身份证号获取性别
*/
public static String getGender(String idCard) {
Matcher matcher = ID_CARD_PATTERN.matcher(idCard);
if (matcher.matches()) {
String genderCode = matcher.group(5);
if (Integer.parseInt(genderCode) % 2 == 0) {
return "女";
} else {
return "男";
}
}
return null;
}
/**
* 根据身份证号获取区域
*/
public static String getArea(String idCard) {
Matcher matcher = ID_CARD_PATTERN.matcher(idCard);
if (matcher.matches()) {
String areaCode = matcher.group(1);
for (String code : AREA_CODE) {
if (code.equals(areaCode)) {
//根据自己的需求返回对应的省市区信息
return "北京市";
}
}
}
return null;
}
}
```
使用示例:
```java
String idCard = "110101199003076543";
String birthday = IdCardUtil.getBirthday(idCard); //"1990-03-07"
String gender = IdCardUtil.getGender(idCard); //"男"
String area = IdCardUtil.getArea(idCard); //"北京市"
```