java校验身份证号码
- /**
- * 18位身份证校验,粗略的校验
- * @author lyl
- * @param idCard
- * @return
- */
- public static boolean is18ByteIdCard(String idCard){
- Pattern pattern1 = Pattern.compile("^(\\d{6})(19|20)(\\d{2})(1[0-2]|0[1-9])(0[1-9]|[1-2][0-9]|3[0-1])(\\d{3})(\\d|X|x)?$"); //粗略的校验
- Matcher matcher = pattern1.matcher(idCard);
- if(matcher.matches()){
- return true;
- }
- return false;
- }
- /**
- * 18位身份证校验,比较严格校验
- * @author lyl
- * @param idCard
- * @return
- */
- public static boolean is18ByteIdCardComplex(String idCard){
- Pattern pattern1 = Pattern.compile("^(\\d{6})(19|20)(\\d{2})(1[0-2]|0[1-9])(0[1-9]|[1-2][0-9]|3[0-1])(\\d{3})(\\d|X|x)?$");
- Matcher matcher = pattern1.matcher(idCard);
- int[] prefix = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
- int[] suffix = new int[]{ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 };
- if(matcher.matches()){
- Map<String, String> cityMap = initCityMap();
- if(cityMap.get(idCard.substring(0,2)) == null ){
- return false;
- }
- int idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和
- for(int i=0;i<17;i++){
- idCardWiSum+=Integer.valueOf(idCard.substring(i,i+1))*prefix[i];
- }
- int idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置
- String idCardLast=idCard.substring(17);//得到最后一位身份证号码
- //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
- if(idCardMod==2){
- if(idCardLast.equalsIgnoreCase("x")){
- return true;
- }else{
- return false;
- }
- }else{
- //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
- if(idCardLast.equals(suffix[idCardMod]+"")){
- return true;
- }else{
- return false;
- }
- }
- }
- return false;
- }
- private static Map<String, String> initCityMap(){
- Map<String, String> cityMap = new HashMap<String, String>();
- cityMap.put("11", "北京");
- cityMap.put("12", "天津");
- cityMap.put("13", "河北");
- cityMap.put("14", "山西");
- cityMap.put("15", "内蒙古");
- cityMap.put("21", "辽宁");
- cityMap.put("22", "吉林");
- cityMap.put("23", "黑龙江");
- cityMap.put("31", "上海");
- cityMap.put("32", "江苏");
- cityMap.put("33", "浙江");
- cityMap.put("34", "安徽");
- cityMap.put("35", "福建");
- cityMap.put("36", "江西");
- cityMap.put("37", "山东");
- cityMap.put("41", "河南");
- cityMap.put("42", "湖北");
- cityMap.put("43", "湖南");
- cityMap.put("44", "广东");
- cityMap.put("45", "广西");
- cityMap.put("46", "海南");
- cityMap.put("50", "重庆");
- cityMap.put("51", "四川");
- cityMap.put("52", "贵州");
- cityMap.put("53", "云南");
- cityMap.put("54", "西藏");
- cityMap.put("61", "陕西");
- cityMap.put("62", "甘肃");
- cityMap.put("63", "青海");
- cityMap.put("64", "宁夏");
- cityMap.put("65", "新疆");
- // cityMap.put("71", "台湾");
- // cityMap.put("81", "香港");
- // cityMap.put("82", "澳门");
- // cityMap.put("91", "国外");
- // System.out.println(cityMap.keySet().size());
- return cityMap;
- }
java校验身份证号码的更多相关文章
- JAVA验证身份证号码是否正确
package com.IdCard; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.D ...
- JAVA通过身份证号码获取出生日期、年龄、性别
JAVA验证身份证号码是否正确:https://www.cnblogs.com/pxblog/p/12038278.html /** * 通过身份证号码获取出生日期(birthday).年龄(age) ...
- Java实现身份证号码校验
二话不说,直接上代码. package hope.identitycodecheck.demo; import java.text.DateFormat; import java.text.Simpl ...
- 【Java】身份证号码验证
代码引用自:https://gitee.com/appleat/codes/ynrtqujv0wfgesm8ia9b547 package xxx; /** * Created by wdj on 2 ...
- JAVA验证身份证号码是否合法
package com.chauvet.utils; import java.text.ParseException; import java.text.SimpleDateFormat; impor ...
- Java实现身份证号码验证源码分享
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- Java的身份证号码工具类
/** * Copyright (C) 2009-2010 Yichuan, Fuchun All rights reserved. * Licensed to the Apache Software ...
- java验证身份证号码是否有效源代码 wn25的头像 wn25 23 2015-01-04 20:09 6 基本信息 Java × 1 浏览
原文:http://www.open-open.com/code/view/1420373343171 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 ...
- java验证身份证号码是否有效源代码
原文:http://www.open-open.com/code/view/1420373343171 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 ...
随机推荐
- JSON和Django内置序列化
JSON 什么是JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * J ...
- 【开发工具IDE】JAVA-eclipse使用汇集
-------------------------------------------------------------------------------------------------- 1 ...
- URL补充
1. 笔记 2. 关于默认值的解释:在url里面,可以直接给views.index传递一个默认值. index函数接收一个形式参数. 在urls.py中,可以直接传递一个实参(也就是默认值). 打印结 ...
- 【CF600E】Lomsat gelral(dsu on tree)
[CF600E]Lomsat gelral(dsu on tree) 题面 洛谷 CF题面自己去找找吧. 题解 \(dsu\ on\ tree\)板子题 其实就是做子树询问的一个较快的方法. 对于子树 ...
- Codeforces Round #406 (Div. 2)滚粗记
A 一看到题,不是一道解不定方程的裸题吗,调了好久exgcd. 其实一个for就好了啊 B 一直WA ON TEST 7真是烦,一想会不会是编号太大了,又写了一个map版本,无用. 调了好久好久才发现 ...
- SQL注入漏洞知识总结
目录: 一.SQL注入漏洞介绍 二.修复建议 三.通用姿势 四.具体实例 五.各种绕过 一.SQL注入漏洞介绍: SQL注入攻击包括通过输入数据从客户端插入或“注入”SQL查询到应用程序.一个成功的S ...
- Codeforces 578B. "Or" Game(思维题)
我们知道所有sigma(2^i){i<n}比2^n小,所以我们肯定是把这k次操作全部丢到一个数上看看能不能凑出二进制下一个更高位的1. 因为k最大只有10,我们可以求出每一个数乘以k次之后的值, ...
- Codeforces Round #385 (Div. 2)A B C 模拟 水 并查集
A. Hongcow Learns the Cyclic Shift time limit per test 2 seconds memory limit per test 256 megabytes ...
- git clone 指定分支的内容
使用Git下载指定分支命令为:git clone -b 分支名仓库地址 使用Git下载v.2.8.1分支代码,使用命令:git clone -b v2.8.1 https://git.oschina. ...
- sleep php函数
<?php echo date('h:i:s') . "<br />"; //暂停 10 秒 sleep(10); //重新开始 echo date('h:i:s ...