下面是 “java身份证验证代码实现”的完整攻略。
1. 身份证号码规则
身份证号码规则如下:
- 身份证号码为18位数字和字母(除最后一位是字母外)
- 前17位为地区码和出生日期码,最后一位为校验码
- 校验码计算方法:
- 取出前17位数字(地区码和出生日期码),按权重分别乘以7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2
- 对乘积求和
- 将和数除以11,得到余数(可能为0~10)
- 余数0~9直接作为校验码,余数10用字母X表示
2. Java实现身份证验证代码
在 Java 中实现身份证验证,需要借助正则表达式和日期格式化,实现代码如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class IdCardUtils {
// 18位身份证正则表达式
private static final String ID_CARD_REGEXP = "^\\d{17}(\\d|X)$";
/**
* 验证身份证号码是否合法
*
* @param idCard 身份证号码
* @return 是否合法
*/
public static boolean isValid(String idCard) {
// 验证格式是否正确
if (!Pattern.matches(ID_CARD_REGEXP, idCard)) {
return false;
}
// 验证校验码是否正确
int[] weight = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
String[] codeArr = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (idCard.charAt(i) - '0') * weight[i];
}
String code = codeArr[sum % 11];
return code.equals(idCard.substring(17));
}
/**
* 获取身份证号码中的出生日期
*
* @param idCard 身份证号码
* @return 出生日期(字符串形式)
* @throws ParseException 解析异常
*/
public static String getBirthday(String idCard) throws ParseException {
String birthdayStr = idCard.substring(6, 14);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(birthdayStr));
return new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
}
// 测试
public static void main(String[] args) throws ParseException {
String idCard1 = "110101199003076810";
String idCard2 = "11010119900307681X";
System.out.println(idCard1 + " 是否合法:" + isValid(idCard1));
System.out.println(idCard2 + " 是否合法:" + isValid(idCard2));
System.out.println(idCard1 + " 出生日期:" + getBirthday(idCard1));
System.out.println(idCard2 + " 出生日期:" + getBirthday(idCard2));
}
}
运行上面的测试代码,可以得到以下输出:
110101199003076810 是否合法:true
11010119900307681X 是否合法:true
110101199003076810 出生日期:1990-03-07
11010119900307681X 出生日期:1990-03-07
3. 示例说明
在实际开发中,可以应用身份证验证代码来验证用户输入的身份证号码是否符合规范,例如:
示例 1:用户在注册页面填写个人信息,其中需要填写身份证号码,那么就可以在提交表单时,调用身份证验证代码,对用户输入的身份证号码进行验证。如果不符合规范,提示用户重新填写。如果符合规范,可以计算出用户的出生日期等信息,方便后续使用。
示例 2:后台管理系统中,可以将用户身份证号码保存到数据库中,并提供身份证号码查询功能。此时,可以在查询操作时,调用身份证验证代码,对用户输入的身份证号码进行验证,保证查询条件的合法性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java身份证验证代码实现 - Python技术站