java身份证号获取信息
时间: 2023-11-10 18:04:59 浏览: 135
Java 身份证号查询
4星 · 用户满意度95%
可以通过身份证号获取到以下信息:
1. 身份证号码的长度和格式是否正确
2. 身份证号码所属地区、出生日期、性别等基本信息
以下是一个Java代码示例,可以通过输入身份证号获取到以上信息:
```java
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class IDCardUtil {
// 身份证号码正则表达式
private static final String ID_CARD_REGEX = "^\\d{17}[\\d|x|X]$";
// 省份代码
private static final String[] PROVINCE_CODE = {"11", "12", "13", "14", "15", "21", "22", "23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43", "44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63", "64", "65", "71", "81", "82"};
// 省份名称
private static final String[] PROVINCE_NAME = {"北京市", "天津市", "河北省", "山西省", "内蒙古自治区", "辽宁省", "吉林省", "黑龙江省", "上海市", "江苏省", "浙江省", "安徽省", "福建省", "江西省", "山东省", "河南省", "湖北省", "湖南省", "广东省", "广西壮族自治区", "海南省", "重庆市", "四川省", "贵州省", "云南省", "西藏自治区", "陕西省", "甘肃省", "青海省", "宁夏回族自治区", "新疆维吾尔自治区", "台湾省", "香港特别行政区", "澳门特别行政区"};
/**
* 根据身份证号获取出生日期
*
* @param idCard 身份证号
* @return 出生日期,格式为 yyyy-MM-dd
*/
public static String getBirthDate(String idCard) {
String birthDate = "";
if (idCard.length() == 18) {
birthDate = idCard.substring(6, 10) + "-" + idCard.substring(10, 12) + "-" + idCard.substring(12, 14);
}
return birthDate;
}
/**
* 根据身份证号获取性别
*
* @param idCard 身份证号
* @return 性别,1表示男性,2表示女性
*/
public static int getGender(String idCard) {
int gender = 0;
if (idCard.length() == 18) {
gender = Integer.parseInt(idCard.substring(16, 17)); if (gender % 2 == 0) {
gender = 2;
} else {
gender = 1;
}
}
return gender;
}
/**
* 根据身份证号获取所属地区
*
* @param idCard 身份证号
* @return 所属地区
*/
public static String getProvince(String idCard) {
String province = "";
if (idCard.length() == 18) {
String provinceCode = idCard.substring(0, 2);
for (int i = 0; i < PROVINCE_CODE.length; i++) {
if (provinceCode.equals(PROVINCE_CODE[i])) {
province = PROVINCE_NAME[i];
break;
}
}
}
return province;
}
/**
* 验证身份证号是否合法
*
* @param idCard 身份证号
* @return true表示合法,false表示不合法
*/
public static boolean isValid(String idCard) {
boolean isValid = false;
if (idCard != null && !"".equals(idCard.trim())) {
Pattern pattern = Pattern.compile(ID_CARD_REGEX);
Matcher matcher = pattern.matcher(idCard);
if (matcher.matches()) {
// 验证校验位
int[] weight = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
String[] checkCode = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
int sum = 0;
for (int i = 0; i < weight.length; i++) {
sum += Integer.parseInt(idCard.substring(i, i + 1)) * weight[i];
}
int mod = sum % 11;
String lastChar = idCard.substring(17);
if (lastChar.equalsIgnoreCase(checkCode[mod])) {
isValid = true;
}
}
}
return isValid;
}
}
```
阅读全文