半成品 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.校验规则详见,这个写的 ...
随机推荐
- Linux 第十节( APACHE )
Apache 基金会,软件 http 协议 httpd 软件包 vim /etc/httpd/conf/httpd.conf //网站配置主文件 systemctl restart http ...
- 简单了解如何自己动手制作RPM包
导读 RPM文件在Linux系统中的安装最为简便.以著名的图像处理软件XV为例,其RPM包xv-3.10a-13.i386.rpm可以在该程序的主页中下载取得. 我们介绍如何自己动手制作RPM包.0, ...
- QString的一些使用技巧
简介 QString 字符串被每个GUI程序所使用,不仅是用户界面,还有数据结构. C++原生提供两种字符串: 传统的C风格以'\0'结尾的字符数组和std::string类.与这些不同,QStrin ...
- android控制台应用binder通讯
在android root环境下,有一个后台服务server进程需要提供接口给控制台应用client调用,本来想用socket方式来做的,后台发现android有更高效的方式来实现.那就是binder ...
- 网页端微信小程序客服
https://mpkf.weixin.qq.com/ 可以设置自动回复
- NTP Mode 6 检测漏洞【原理扫描】
系统: AIX7 cd /etc cp ntp.conf ntp.conf.bak vi net.conf ## 在最后加上一行 restrict default notrust nomodify n ...
- ssl自动更新证书
安装证书 yum install certbot 更新证书之前先开启80 443 端口 自动生成证书certbot certonly --standalone --agree-tos -n -d ww ...
- Linux系统root密码忘记修改
重启Linux系统 到启动状态: 按任意键,进入GRUB菜单: 按字母e进入: 调整到上图,按字母e,进入 不进行删减,在后面输入" 1"(空格1),按回车,进入 或者将" ...
- drush .. drupal console
"You can run both." They compliment each other, yet the final decision is yours. Especiall ...
- 回溯-1-N皇后(Backtracking-1-N Queens)
#include <stdio.h> #define N 4 enum bool {TRUE, FALSE}; void print_Q(int *Q) { int i; for (i = ...