2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 各证件号码(身份证 护照 军官证 驾驶证 港澳台湾通行证 户口簿)正则表达式校验 完整正确

各证件号码(身份证 护照 军官证 驾驶证 港澳台湾通行证 户口簿)正则表达式校验 完整正确

时间:2022-07-06 16:21:47

相关推荐

各证件号码(身份证 护照 军官证 驾驶证 港澳台湾通行证 户口簿)正则表达式校验  完整正确

网上种类繁多,这里整理了最详细最正确的(身份证、护照、军官证、驾驶证、港澳台湾通行证、户口簿)正则校验

package com.***.utils;/*** @Description 各证件卡号校验类* @author longwei* @date /7/23 14:17*/public class CardsUtil {/** 正则表达式:验证身份证 */public static final String REGEX_ID_CARD = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|" +"(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";/** 正则表达式:验证户口簿 9位数字 */public static final String REGEX_HUKOU_CARD = "\\d{9}";/** 正则表达式:验证护照 数字+字母,共9位 */public static final String REGEX_PASSPORT_CARD = "^([a-zA-z]|[0-9]){9}$";/** 正则表达式:验证军官证 汉字+8位数字 */public static final String REGEX_OFFICER_CARD = "^[\\u4E00-\\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$";/** 正则表达式:验证驾驶证 12位数字 */public static final String REGEX_DRIVE_CARD = "\\d{12}$";/** 正则表达式:验证港澳居民通行证 H/M + 10位或8位数字 */public static final String REGEX_HK_CARD = "^[HMhm]{1}([0-9]{10}|[0-9]{8})$";/** 正则表达式:验证台湾居民通行证 新版8位或18位数字,旧版10位数字 + 英文字母 */public static final String REGEX_TW_CARD = "^\\d{8}|^[a-zA-Z0-9]{10}|^\\d{18}$";/*** 校验身份证** @param idCardNo 身份证号* @return 校验通过返回true,否则返回false* @by /u011106915/article/details/76066985*/public static boolean isIDCard(String idCardNo) {//校验非空if (StringUtil.isEmptyStr(idCardNo)) {return false;}//校验长度int idCardLength = idCardNo.length();if (idCardLength != 18 && idCardLength != 15) {return false;}// 定义判别用户身份证号的正则表达式(15位或者18位,最后一位可以为字母)//假设18位身份证号码:41000119910101123X 410001 19910101 123X//^开头//[1-9] 第一位1-9中的一个4//\\d{5} 五位数字 10001(前六位省市县地区)//(18|19|20)19(现阶段可能取值范围18xx-20xx年)//\\d{2}91(年份)//((0[1-9])|(10|11|12))01(月份)//(([0-2][1-9])|10|20|30|31)01(日期)//\\d{3} 三位数字 123(第十七位奇数代表男,偶数代表女)//[0-9Xx] 0123456789Xx其中的一个 X(第十八位为校验值)//$结尾//假设15位身份证号码:410001910101123 410001 910101 123//^开头//[1-9] 第一位1-9中的一个4//\\d{5} 五位数字 10001(前六位省市县地区)//\\d{2}91(年份)//((0[1-9])|(10|11|12))01(月份)//(([0-2][1-9])|10|20|30|31)01(日期)//\\d{3} 三位数字 123(第十五位奇数代表男,偶数代表女),15位身份证不含X//$结尾boolean matches = idCardNo.matches(REGEX_ID_CARD);//判断第18位校验值if (matches) {//如是15位身份证,不做更多校验,直接返回合法if (idCardLength == 15) {return true;}if (idCardLength == 18) {try {char[] charArray = idCardNo.toCharArray();//前十七位加权因子int[] idCardWi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//这是除以11后,可能产生的11位余数对应的验证码String[] idCardY = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};int sum = 0;for (int i = 0; i < idCardWi.length; i++) {int current = Integer.parseInt(String.valueOf(charArray[i]));int count = current * idCardWi[i];sum += count;}char idCardLast = charArray[17];int idCardMod = sum % 11;return idCardY[idCardMod].toUpperCase().equals(String.valueOf(idCardLast).toUpperCase());} catch (Exception e) {e.printStackTrace();return false;}}}return matches;}/*** 校验户口簿** @param huKouNo 户口簿号* @return 校验通过返回true,否则返回false*/public static boolean isHuKouCard(String huKouNo) {//校验非空 校验长度if (StringUtil.isEmptyStr(huKouNo) || huKouNo.length() != 9 ) {return false;}return huKouNo.matches(REGEX_HUKOU_CARD);}/*** 校验护照** @param passPortNo 护照号* @return 校验通过返回true,否则返回false*/public static boolean isPassPortCard(String passPortNo) {//校验非空if (StringUtil.isEmptyStr(passPortNo)) {return false;}return passPortNo.matches(REGEX_PASSPORT_CARD);}/*** 校验军官证* 规则: 军/兵/士/文/职/广/(其他中文) + "字第" + 4到8位字母或数字 + "号"* 样本: 军字第2001988号, 士字第P011816X号* @param officerNo 军官证号* @return 校验通过返回true,否则返回false*/public static boolean isofficerCard(String officerNo) {//校验非空if (StringUtil.isEmptyStr(officerNo)) {return false;}return officerNo.matches(REGEX_OFFICER_CARD);}/*** 校验驾驶证** @param driveNo 驾驶证号* @return 校验通过返回true,否则返回false*/public static boolean isDriveCard(String driveNo) {//校验非空 校验长度if (StringUtil.isEmptyStr(driveNo) || driveNo.length() != 12 ) {return false;}return driveNo.matches(REGEX_DRIVE_CARD);}/*** 校验港澳通行证** @param HMNo 港澳通行证号* @return 校验通过返回true,否则返回false*/public static boolean isHMCard(String HMNo) {//校验非空if (StringUtil.isEmptyStr(HMNo)) {return false;}return HMNo.matches(REGEX_HK_CARD);}/*** 校验台湾通行证* 规则 新版8位或18位数字,旧版10位数字 + 英文字母* @param TWNo 台湾通行证号* @return 校验通过返回true,否则返回false*/public static boolean isTWCard(String TWNo) {//校验非空if (StringUtil.isEmptyStr(TWNo)) {return false;}return TWNo.matches(REGEX_TW_CARD);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。