半成品 java 身份证校验
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 身份证校验的更多相关文章
- Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式
Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...
- java实现身份证校验
原文来自:java教程网 题目:身份证校验 身份证校验 如果让你设计个程序,用什么变量保存身份证号码呢?长整数可以吗?不可以! 因为有人的身份证最后一位是"X" 实 ...
- 转:java身份证格式强校验
package com.dsh.zealandweb.utils; import java.util.HashSet; import java.util.regex.Pattern; import o ...
- Java实现18位身份证校验代码
import java.util.Scanner; /** * 18位身份证校验 * @author [J.H] * */ public class Test { // 身份证校验 public st ...
- 篇二:JS身份证校验
身份证校验 function identityCodeValid(code) { var city={11:"北京",12:"天津",13:"河北&q ...
- Powerbuilder编写身份证校验码
public function boolean of_calc_cardid_verifycode (string as_cardid, ref string as_verifycode); /* 计 ...
- 最严格的身份证校验(JavaScript版)
在JavaWeb研发过程中为了获取有效的用户信息,校验其数据的有效性非常是必要,以下贴出在项目中用到的关于身份证的校验: <!DOCTYPE HTML PUBLIC "-//W3C// ...
- 身份证校验程序(下)- 零基础入门学习Delphi49
身份证校验程序 让编程改变世界 Change the world by program [caption id="attachment_2699" align="alig ...
- 身份证校验程序(上)- 零基础入门学习Delphi48
身份证校验程序 让编程改变世界 Change the world by program [caption id="attachment_2699" align="alig ...
- 完美实现身份证校验 js正则
注意: 1.只针对18为身份证号码进行校验,现在15位的应该很少了, 2.不区分xX大小写, 3.出生年份1900-2099,每月的天数也进行相关验证(考虑的闰月的情况), 4.校验规则详见,这个写的 ...
随机推荐
- python APScheduler用法
参考: https://blog.csdn.net/weixin_44799217/article/details/127353134 https://blog.csdn.net/weixin_428 ...
- Android学习——控件ProgressBar
1.常用属性
- [转]Windows 批处理命令教程
第一章 批处理基础 第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可 ...
- vue打包后打开index.html文件显示空白页问题
通过网上的资料发现在vue.config.js中写入再重新打包就可以再index.html中显示. https://blog.csdn.net/m0_51060602/article/details/ ...
- 【文献阅读】Nonlinear controller design of a ship autopilot
(1)文章工作 The main goal here is to design a proper and efficient controller for a ship autopilot based ...
- ORCAD中,怎么一次性去掉所有元器件下面的下划线呢
选择元器件,右键找到unset单击就可以去掉了
- wpf 解决画图模糊或抗锯齿以及文字模糊或抗锯齿问题
解决方案中使用的.Net FrameWork版本:4.6.1 画图模糊或抗锯齿: 控件属性加入 SnapsToDevicePixels="True" 文字模糊或抗锯齿: 控件属性 ...
- CPU、内存的占用率
要获取不包含百分比符号的内存占用率: #free -t | awk 'NR ==2 {print "Current Memory Utilization is: "$3/$2*10 ...
- Impala 学习笔记
VALUES Statement | 6.3.x | Cloudera Documentation SELECT now() as date_DES UNION ALL SELECT trunc(no ...
- Java8函数式编程(A)
将行为作为数据传递 函数编程的最直接的表现,莫过于将函数作为数据自由传递,结合泛型推导能力,使代码表达能力获得飞一般的提升. Java8怎么支持函数式编程? 主要有三个核心概念: 函数接口(Funct ...