身份证验证之简单校验

import java.util.Calendar; import java.util.Scanner; public class ValidateID { /* * 我国现行使用公民身份证号码有两种尊循两个国家标准,〖GB 11643-1989〗和〖GB 11643-1999〗。 * 〖GB 11643-1989〗中规定的是15位身份证号码:排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。 * 〖GB 11643-1999〗中规定的是18位身份证号码:公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。 * 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 * 地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码。 * 出生日期码:表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。 * 顺序码:表示同一地址码所标识的区域范围内,对同年、同月、同日出生的人员编定的顺序号。 * 顺序码的奇数分给男性,偶数分给女性。 * 校验码:是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。 */ // 记录信息 private String info = "地区:"; public static void main(String[] args) { new ValidateID().validateId(); } public void validateId() { System.out.println("输入身份证号码:"); Scanner sc = new Scanner(System.in); String id = sc.nextLine(); // 判断是不是18位数字 if (id.length() != 18) { System.out.println("输入的位数不对"); return; } // 如果含有非数字,则直接返回退出 try { Long.parseLong(id); } catch (Exception e) { System.out.println("输入非数字"); return; } // 身份证代表省份的数字 int shengfen = Integer.parseInt(id.substring(0, 2)); //判断是否有该省份,有则获得相应信息 if(!isArea(shengfen)){ System.out.println("省份不对"); return; } // 获得身份证年份 int nianfen = Integer.parseInt(id.substring(6, 10)); info += "出生日期:" + nianfen + "年"; // 获得日期实例 Calendar rightNow = Calendar.getInstance(); // 获得当前年份 int MaxYear = rightNow.get(Calendar.YEAR); if ((nianfen < 1949) && (nianfen > MaxYear)) { System.out.println("年份不对"); return; } // 获得身份证月份 int yuefen = Integer.parseInt(id.substring(10, 12)); info += yuefen + "月"; // 判断月份是否正确 if ((yuefen <= 0) && (yuefen > 12)) { System.out.println("月份错误"); return; } // 获得身份证日期 int riqi = Integer.parseInt(id.substring(12, 14)); info += riqi + "日"; // 判断日期是否正确 if (riqi <= 0 && riqi > 31) { System.out.println("日期错误"); return; } // 获得身份证性别数字 int sex = Integer.parseInt(id.substring(16, 17)); // 奇数为男,偶数为女 if (sex % 2 == 0) { info += " 性别:女"; } else { info += " 性别:男"; } System.out.println("该身份证通过验证"); // 打印身份证信息 System.out.println("信息如下"); System.out.println(info); } //判断该省份,并获得省份信息 public boolean isArea(int shengfen){ // 判断该省份是否存在,其中下列代码代表不同省份,可到网上查找获得 if (!((shengfen == 11) || (shengfen == 12) || (shengfen == 13) || (shengfen == 14) || (shengfen == 15) || (shengfen == 21) || (shengfen == 22) || (shengfen == 23) || (shengfen == 31) || (shengfen == 32) || (shengfen == 33) || (shengfen == 34) || (shengfen == 35) || (shengfen == 36) || (shengfen == 37) || (shengfen == 41) || (shengfen == 42) || (shengfen == 43) || (shengfen == 44) || (shengfen == 45) || (shengfen == 46) || (shengfen == 50) || (shengfen == 51) || (shengfen == 52) || (shengfen == 53) || (shengfen == 54) || (shengfen == 61) || (shengfen == 62) || (shengfen == 63) || (shengfen == 64) || (shengfen == 65) || (shengfen == 71) || (shengfen == 81) || (shengfen == 82))) { System.out.println("省份不对"); return false; } if (shengfen == 11) { info += "北京 "; } if (shengfen == 12) { info += "天津 "; } if (shengfen == 13) { info += "河北 "; } if (shengfen == 14) { info += "山西 "; } if (shengfen == 15) { info += "内蒙古 "; } if (shengfen == 21) { info += "辽宁 "; } if (shengfen == 22) { info += "吉林 "; } if (shengfen == 23) { info += "黑龙江 "; } if (shengfen == 31) { info += "上海 "; } if (shengfen == 32) { info += "江苏 "; } if (shengfen == 33) { info += "浙江 "; } if (shengfen == 34) { info += "安徽 "; } if (shengfen == 35) { info += "福建 "; } if (shengfen == 36) { info += "江西 "; } if (shengfen == 37) { info += "山东 "; } if (shengfen == 41) { info += "河南 "; } if (shengfen == 42) { info += "湖北 "; } if (shengfen == 43) { info += "湖南 "; } if (shengfen == 44) { info += "广东 "; } if (shengfen == 45) { info += "广西壮族自治区 "; } if (shengfen == 46) { info += "海南 "; } if (shengfen == 50) { info += "重庆 "; } if (shengfen == 51) { info += "四川 "; } if (shengfen == 52) { info += "贵州 "; } if (shengfen == 53) { info += "云南 "; } if (shengfen == 54) { info += "西藏自治区 "; } if (shengfen == 61) { info += "陕西 "; } if (shengfen == 62) { info += "甘肃 "; } if (shengfen == 63) { info += "青海 "; } if (shengfen == 64) { info += "宁夏回族自治区 "; } if (shengfen == 65) { info += "新疆维吾尔族自治区 "; } if (shengfen == 71) { info += "台湾 "; } if (shengfen == 81) { info += "香港特别行政区 "; } if (shengfen == 82) { info += "澳门特别行政区 "; } return true; } }
Xilinx ISE系列教程(2):LED点灯工程、仿真、bit下载和mcs固化 bit流生成配置选项很多,支持生成bit/bin/ascii格式的bin文件,是否压缩,配置速度,配置管脚的上下拉,用户ID,数据加载速度,SPI总线宽度,是否支持Readback,程序加密等等。,在之后的文章,我们会以Xilinx Spartan-6系列FPGA XC6SLX16为例,不涉及FPGA开发知识,仅仅是工具的使用,介绍Xilinx ISE开发环境的使用教程和使用技巧。bit文件下载之后,可以看到LED按照我们设计的1s周期闪烁起来了,但是此时如果断电,重新上电程序就丢失了。... 阅读详情

相关推荐

Python量化交易实战:pytdx库高效获取通达信分笔成交数据

本文详细介绍了如何使用Python的pytdx库高效获取通达信分笔成交数据,为量化交易提供关键市场微观结构分析。通过环境搭建、服务器连接、数据获取与清洗的完整流程,帮助开发者快速掌握这一免费高质量数据源,并实现分笔数据的实战分析与应用。

weixin_29061509的博客 1345

判断身份证号码的正确性源码

判断身份证号码的正确性源码根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。生日期

hbqjzx的专栏 2713

WSL 2 部署 Rocky Linux 9:从零到生产环境配置指南(2025版)

本文详细介绍了如何在WSL 2上部署Rocky Linux 9,从环境准备到生产环境配置的全流程指南。通过优化安装流程和系统配置,帮助开发者和运维工程师在Windows环境下高效运行企业级Linux系统,特别适合需要本地开发但部署到RHEL系服务器的项目。

weixin_28455801的博客 479

身份证号码相关知识

<br /><br />身份号码是特征组合码,由十七位数字本体码和一位校验码组成。<br />排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。<br />身份证地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。<br />身份证出生日期码表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。<br />身份证顺序码表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号

wangjingboasp的专栏 6127

《科研伦理与学术规范》期末考试答案2023

26单选(2 分)某学术杂志的评稿人同时是某高校相关专业的硕士生导师,在评判一个稿件的时候,他发现该作者研究的题目很有价值, 他便一边压下这个稿子,一边将稿子的纲要传给自己门下的硕士生, 指导他们使用这个题目独立写出一篇论文,并帮助他们发表在其他期 刊上。D.要善待实验动物,是指在饲养管理和使用实验动物过程中,要采取有效措施,使实验动物免遭不必要的伤害、饥渴、不适、惊恐、折磨、疾病和疼痛,保证动物能够实现自然行为,受到良好的管理与照料,为其提供清洁、舒适的生活环境。张某在压力之下不得不屈从。

Glenseeds的博客 4万+

基于阻抗控制的工业机器人轨迹跟踪系统 Simulink/Simscape 仿真

  本文是对文献 [1] 的复现。 关于阻抗控制   阻抗控制的提出可以追溯到 1984 年,Neville Hogan 在 American Control Conference 发表的 Impedance Control:An Approach to Manipulation ,次年,Hogan N. 又在 Journal of Dynamic Systems Measurement and Control-transactions of The Asme 发表了阻抗控制经典三部曲 —— Imped.

-贝塔- 的博客 2万+

常用的的身份证校验方法

常用的的身份证中代码的处理……

两点 5556

拉曼光谱入门:10.显微拉曼与共聚焦技术

本文系统阐述了显微拉曼光谱技术与共聚焦原理的融合机制,详细解析了从激光激发、针孔空间滤波到光谱采集的完整光路架构,阐明了共聚焦设计在提升三维空间分辨率、抑制荧光背景及实现微区无损层析方面的核心优势,并探讨了关键光学器件的性能边界与系统技术局限。

qq_53529450的博客 166

如何免费进行身份证实名验证核验

身份证实名认证接口API

解决API接口开发的博客 9921

廉价却有效?ESD防护中的电容

摘要:在成本敏感型电子产品设计中,多层陶瓷电容(MLCC)可作为TVS二极管的替代方案用于静电放电(ESD)防护。其工作原理是通过电容充放电特性吸收静电能量,而非电压钳位。计算表明100nF/50V MLCC可有效缓冲8kV静电冲击,但存在吸收能量有限、无自恢复等局限。建议将MLCC作为一级缓冲措施,配合TVS等器件形成多级防护,并优先选择X7R材质、100nF容值、50V耐压的0402/0603封装MLCC。该方案在低速信号和电源引脚防护中具有显著成本优势,但不能完全替代专业ESD抑制器。

硬核科技 430

出现 Transaction rolled back because it has been marked as rollback-only 解决方法

出现 Transaction rolled back because it has been marked as rollback-only 解决方法

码农研究僧的博客 1万+

java实现身份证号码校验

java实现身份证号码校验

yushun的博客 1万+

lammps原子组速度的计算方法

在lammps摩擦、冲击、压痕等模拟过程中,涉及到某个原子组的整体移动,如果要输出这个原子组的整体移动速度,可以使用vcm()函数。下面是一个具体的使用案例,金刚石球在盒子内移动,输出移动过程中金刚石球在x方向的质心速度。vcm()是lammps自带的一个函数,返回原子组质心在设定方向的速度。其中,ID为group-ID,dim为方向,可设置x、y或者z方向。大家好,我是小马老师。

lammps_jiayou的博客 343

身份证正则表达式

身份证正则表达式 1、简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)/&quot;,/&quot;,/",id_card) (2)preg_match("/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X)?/&quot;,/&qu...

许达华的博客 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【第005篇】vue工具脚本-校验身份证号码是否合法(不是简单验证身份证号码是否15或18位,而是包含了校验位)

/** * 校验身份证号码是否合法 * @param num * @returns {boolean} */ export function isIdCard (num) { if (!num) { return false } num = num.toUpperCase() // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。 if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test

嘉&年华的博客 883

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

15位和18位身份证的正则表达式及其验证

15位和18位身份证的正则表达式及其验证 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术: 作者:罗小龙 撰写时间:2019.1.30 1、简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/",$id_card) (2)preg_match("/...

weixin_44560813的博客 2665

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

身份证号验证

1、简单的正则表达式: (1)preg_match("/^(/d{18,18}|/d{15,15}|/d{17,17}x)$/",$id_card) (2)preg_match("/^(/d{6})(18|19|20)?(/d{2})([01]/d)([0123]/d)(/d{3})(/d|X)?$/",$id_card) (3)preg_match("/(^/d{15}$/)|(

a623397674a的专栏 667

18位身份证验证--java实现,正则表达式

简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/",$id_card)(2)preg_match("/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3}) (\d|X)?$/",$id_card)(3)preg_match("/(^\d{15}$/)|(\d{17...

a821048508的博客 832

身份证验证方法

1、简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/",$id_card) (2)preg_match("/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(

Feebas 1040

验证身份证号是否合法JS

--> 验证身份证号 身份证号:(可以为空) 公司现用判定。已有的身份证号差不多都能给通过,不存在的大部分能给报错....

youngloveheart的专栏 645

JS验证身份证有效性

页面: 效果为输入身份证号,焦掉移开后自动验证,并返回信息! <input type="text" class="reg_txt" value="身份证号" titles="请输入您的身份证号!" name="userid" id="username" maxlength="40" onfocus="if(this.value=='身份证号'){this.value='';}"

XuJiangDong 1724

身份证号码验证

大陆身份证号验证         function checkDlIdNumber(){                 var idNumber = document.getElementById("idNumber").value;                 if(isStandard(idNumber)){                         alert("

leayefang的专栏 1461

验证身份证

网络上的身份验证很多,如有雷同纯属巧合。呵呵! 我的也是根据网上的一些东西 自己写的一些东东,希望对大家有帮助 1、简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/",$id_card)  (2)preg_match("/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)

各种学习各种纠结 1807

java简易身份证校验

public static void main(String[] args) {                   int[] intArr = new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};                   String[] strArr = new String[]{"1", "0", "

shwanglp的专栏 740

新版身份证校验位算法

资料搜集,供参考 新身份证校验位算法 ftsun 18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份号码",另外GB11643-1999《公民身份号码》从实施之日起代替GB11643

航海日志 1074
上一篇: apache和tomcat整合连接插件下载地址
下一篇: 身份证验证之简单校验
coollor
博客等级 码龄15年 48粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值