用正则表达式验证身份证号码 java

前端之家收集整理的这篇文章主要介绍了用正则表达式验证身份证号码 java前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
import java.text.DateFormat; import java.text.NumberFormat; import java.text.ParseException; import java.util.Date; import java.util.Random; public class Identity { // 位权值数组 private static byte[] Wi=new byte[17]; // 身份证前部分字符数 private static final byte fPart = 6; // 身份证算法求模关键值 private static final byte fMod = 11; // 旧身份证长度 private static final byte oldIDLen = 15; // 新身份证长度 private static final byte newIDLen = 18; // 新身份证年份标志 private static final String yearFlag = "19"; // 校验码串 private static final String CheckCode="10X98765432"; // 最小的行政区划码 private static final int minCode = 150000; // 最大的行政区划码 private static final int maxCode = 700000; // 旧身份证号码 // private String oldIDCard=""; // 新身份证号码 // private String newIDCard=""; // 地区及编码 //private String Area[][2] = private static void setWiBuffer(){ for(int i=0;i <Wi.length;i++){ int k = (int) Math.pow(2,(Wi.length-i)); Wi[i] = (byte)(k % fMod); } } //获取新身份证的最后一位:检验位 private static String getCheckFlag(String idCard){ int sum = 0; //进行加权求和 for(int i=0; i <17; i++){ sum += Integer.parseInt(idCard.substring(i,i+1)) * Wi[i]; } //取模运算,得到模值 byte iCode = (byte) (sum % fMod); return CheckCode.substring(iCode,iCode+1); } //判断串长度的合法性 private static boolean checkLength(final String idCard,boolean newIDFlag){ boolean right = (idCard.length() == oldIDLen) || (idCard.length() == newIDLen); newIDFlag = false; if(right){ newIDFlag = (idCard.length() == newIDLen); } return right; } //获取时间串 private static String getIDDate(final String idCard,boolean newIDFlag){ String dateStr = ""; if(newIDFlag) dateStr = idCard.substring(fPart,fPart+8); else dateStr = yearFlag + idCard.substring(fPart,fPart+6); return dateStr; } //判断时间合法性 private static boolean checkDate(final String dateSource){ String dateStr = dateSource.substring(0,4)+"-"+dateSource.substring(4,6)+"-"+dateSource.substring(6,8); System.out.println(dateStr); DateFormat df = DateFormat.getDateInstance(); df.setLenient(false); try { Date date= df.parse(dateStr); return (date!=null); } catch (ParseException e) { // TODO Auto-generated catch block return false; } } //旧身份证转换成新身份证号码 public static String getNewIDCard(final String oldIDCard){ //初始化方法 Identity.setWiBuffer(); if(!checkIDCard(oldIDCard)){ return oldIDCard; } String newIDCard = oldIDCard.substring(0,fPart); newIDCard += yearFlag; newIDCard += oldIDCard.substring(fPart,oldIDCard.length()); String ch = getCheckFlag(newIDCard); newIDCard += ch; return newIDCard; } 原文链接:https://www.f2er.com/regex/362431.html

猜你在找的正则表达式相关文章