public static Boolean is18Card(String idCard18) {
//证件省份
HashMap<String, String> aCity = new HashMap<>();
aCity.put("11","北京");
aCity.put("12","天津");
aCity.put("13","河北");
aCity.put("14","山西");
aCity.put("15","内蒙古");
aCity.put("21","辽宁");
aCity.put("22","吉林");
aCity.put("23","黑龙江");
aCity.put("31","上海");
aCity.put("33","浙江");
aCity.put("34","安徽");

aCity.put("35","福建");
aCity.put("36","江西");
aCity.put("37","山东");
aCity.put("41","河南");
aCity.put("42","湖北");
aCity.put("43","湖南");
aCity.put("44","广东");
aCity.put("45","广西");
aCity.put("46","海南");
/* 50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门",
91: "国外"*/

//出生日期
String year = idCard18.substring(6,10);
String month = idCard18.substring(10,12);
String day = idCard18.substring(12,14);
Date temp_date = new Date(Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(day) - 1);
// String temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));

//最后一位校验码
int sum = 0;
int[] weights = new int[17];
weights[0]=7;
weights[1]=9;
weights[2]=10;
weights[3]=5;
weights[4]=8;
weights[5]=4;
weights[6]=2;
weights[7]=1;
weights[8]=6;
weights[9]=3;
weights[10]=7;
weights[11]=9;
weights[12]=10;
weights[13]=5;
weights[14]=8;
weights[15]=4;
weights[16]=2;
String codes = "10X98765432";
String[] code = codes.split("");
String[] idCard18Split = idCard18.split("");
for (int i = 0; i < idCard18Split.length - 1; i++) {

sum += Integer.parseInt(idCard18Split[i]) * weights[i];
}
String last = code[sum % 11]; //计算出来的最后一位证件号码

String province = idCard18.substring(0, 2);
//校验前2位省份
if(aCity.get(idCard18.substring(0, 2))==null) {
System.out.println("证件省份代码错误");
}
//出生日期验证 暂未完成
else if(temp_date.getYear()!=parseFloat(year)
||temp_date.getMonth()!=parseFloat(month)-1
||temp_date.getDate()!=parseFloat(day) )
{
System.out.println("'证件出生日期错误");
}
//证件最后一位校验码验证
else if(idCard18Split[idCard18Split.length - 1] != last) {
System.out.println("'证件出生日期错误");
}
return null;
}

半成品 java 身份证校验的更多相关文章

  1. Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式

    Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...

  2. java实现身份证校验

    原文来自:java教程网 题目:身份证校验   身份证校验   如果让你设计个程序,用什么变量保存身份证号码呢?长整数可以吗?不可以!   因为有人的身份证最后一位是"X"   实 ...

  3. 转:java身份证格式强校验

    package com.dsh.zealandweb.utils; import java.util.HashSet; import java.util.regex.Pattern; import o ...

  4. Java实现18位身份证校验代码

    import java.util.Scanner; /** * 18位身份证校验 * @author [J.H] * */ public class Test { // 身份证校验 public st ...

  5. 篇二:JS身份证校验

    身份证校验 function identityCodeValid(code) { var city={11:"北京",12:"天津",13:"河北&q ...

  6. Powerbuilder编写身份证校验码

    public function boolean of_calc_cardid_verifycode (string as_cardid, ref string as_verifycode); /* 计 ...

  7. 最严格的身份证校验(JavaScript版)

    在JavaWeb研发过程中为了获取有效的用户信息,校验其数据的有效性非常是必要,以下贴出在项目中用到的关于身份证的校验: <!DOCTYPE HTML PUBLIC "-//W3C// ...

  8. 身份证校验程序(下)- 零基础入门学习Delphi49

    身份证校验程序 让编程改变世界 Change the world by program [caption id="attachment_2699" align="alig ...

  9. 身份证校验程序(上)- 零基础入门学习Delphi48

    身份证校验程序 让编程改变世界 Change the world by program [caption id="attachment_2699" align="alig ...

  10. 完美实现身份证校验 js正则

    注意: 1.只针对18为身份证号码进行校验,现在15位的应该很少了, 2.不区分xX大小写, 3.出生年份1900-2099,每月的天数也进行相关验证(考虑的闰月的情况), 4.校验规则详见,这个写的 ...

随机推荐

  1. Windows10使用WSL(Windows Subsystem for Linux)

    官方页面地址:https://docs.microsoft.com/zh-cn/windows/wsl/ 查看WSL的IP地址:ip addr | grep eth0 下面是一个示例 PowerShe ...

  2. A - Yet Another Tetris Problem

    A - Yet Another Tetris Problem 思路:判读一堆数字是不是同奇数偶数,写一个函数,循环遍历,然后判断是否同为奇数偶数. 代码: #include<iostream&g ...

  3. JS a标签文件下载

    aDownload(url, fileName) { const link = document.createElement('a') link.style.display = 'none' link ...

  4. docker 实现原理

    实现原理 docker虚拟化 的核心是需要解决两个问题,资源隔离与资源限制 虚拟机是通过硬件虚拟化技术,通过一个 hypervisor 层实现对资源的彻底隔离 容器则是通过操作系统级别的虚拟化技术,利 ...

  5. 00_k8s_learn

    10本 Kubernetes 学习书籍推荐 - 知乎 https://zhuanlan.zhihu.com/p/468291559 Helm 的安装使用 · 从 Docker 到 Kubernetes ...

  6. ThinkPHP获取当前url

    $httpType = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTT ...

  7. oracle form lov 查询慢

    设置lov属性,如下:

  8. acl规则问题

    在acl规则中网络地址与广播地址包含在规则范围内

  9. SpringCloud-Study

    SpringCloud-Study 一.微服务简介 1.单体架构和分布式架构 单体架构 分布式架构 分布式架构的问题 解决方案 小结 2.微服务 微服务技术 微服技术对比 3.SpringCloud ...

  10. CSS中的选择( ::selection和user-select)

      CSS中的选择( ::selection和user-select) 在网络上,我们出于不同原因选择内容,也许我们想复制文本并在某处引用它.对于移动端来说,选择内容比较难,我不喜欢在移动端选择内容. ...