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;
}
}
相关推荐
Vivado2023.2与Vitis协同开发:从Hello World到BOOT.BIN的完整流程解析
本文详细解析了使用Vivado 2023.2与Vitis协同开发ZYNQ/MPSoC平台的完整流程。从环境安装、硬件设计、软件编写、在线调试到生成独立的BOOT.BIN启动文件,手把手指导开发者完成从Hello World到系统固化的全步骤,并提供了常见问题的避坑指南,帮助初学者快速掌握软硬件协同开发的核心技能。
判断身份证号码的正确性源码
判断身份证号码的正确性源码根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。生日期
每天一个优秀提示词学习收藏 - 文本创作篇(二)
宝子们,今天不藏私啦!我把这段时间四处搜罗、潜心钻研出来的文本创作 Prompt 提示词大礼包双手奉上,这可都是能让你的 AI 创作水平原地起飞的干货!走过路过不要错过,赶紧码住,开启你的 AI 创作进阶之旅吧!
身份证号码相关知识
<br /><br />身份号码是特征组合码,由十七位数字本体码和一位校验码组成。<br />排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。<br />身份证地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。<br />身份证出生日期码表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。<br />身份证顺序码表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号
STM32F4使用CUBEMX ADC定时采样+DMA
STM32、FFT、ADC、TIM
整车电检工艺流程
本文是笔者在从事汽车行业智能制造领域过程,对于整车电检工艺流程的理解与总结。
常用的的身份证校验方法
常用的的身份证中代码的处理……
【27】软考软件设计师——数据流图(DFD)补全题满分精讲|下午15分大题深度拆解
本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第27篇,深度精讲**下午案例题第1道必考大题:数据流图(DFD)补全**,该题单题分值高达**12 ~ 15分**,是整张试卷最稳的保底得分大题。我结合多年备考复盘与真题阅卷规则,超详细拆解DFD四大核心元素标准定义、机考绘图规范、三层分层逻辑、**父图子图平衡刚性扣分规则**,升级强化版「DFD满分补全三步法」;复刻历年高频真题完整流程,拆解缺失数据流定位、实体/存储辨析、平衡改错、文字需求对照全流程,配套**阅卷满分答题话术、机考避坑细则
如何免费进行身份证实名验证核验
身份证实名认证接口API
11、气动外形优化中的连续伴随方法
本文探讨了连续伴随方法在气动外形优化中的理论背景、实现和验证过程。通过使用DLR的FLOWer求解器,将伴随方法应用于Euler和Navier-Stokes方程,以高效计算成本函数梯度,从而显著减少优化过程中的计算成本。文章还介绍了该方法在RAE2822翼型和ONERA M6机翼等案例中的应用,并展示了其准确性和效率。未来展望包括扩展到复杂流动模拟和多学科优化。
5. SAP UI5 视图控制器(Controller)初探
本教程的前一个步骤也就是第四个步骤,我们了解了 SAP UI5 XML 视图的使用方法。在该步骤里,我们在 XML 视图里声明了一个 Text 控件实例,该控件位于 sap.m 这个命名空间内。 本步骤会继续接触 SAP UI5 MVC 框架中三大基石的另一块:C - Controller,即控制器。 先看看本步骤完成之后,我们得到的 SAP UI5 应用能实现一个什么样的效果。 访问如下 url: http://localhost:8080/webapp/index.html 能看到一个 Say Hell
身份证正则表达式
身份证正则表达式 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)?/",/&qu...
【Python爬虫系列】_005.浏览器开发者工具(详解)
Elements(元素)分析当前页面节点,用来辅助书写BS或者XPath这里面的数据与源代码有区别,不一定准确(避坑)Console(控制台)这个除了查看错误信息、打印调试信息(console.log())、写一些测试脚本以外,还可以当作Javascript API查看用例如我想查看console都有哪些方法和属性,我可以直接在Console中输入"console"并执行后续学js逆向的时候需要用到Sources(源代码)与在网页页面,鼠标右键——查看网页源代码 内容一致。
【第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
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
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("/...
Outlook Express 6 (OE6) for Win7/Win8/Win10
英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。
身份证号验证
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}$/)|(
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...
身份证验证方法
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)(
JS验证身份证有效性
页面: 效果为输入身份证号,焦掉移开后自动验证,并返回信息! <input type="text" class="reg_txt" value="身份证号" titles="请输入您的身份证号!" name="userid" id="username" maxlength="40" onfocus="if(this.value=='身份证号'){this.value='';}"
验证身份证号是否合法JS
--> 验证身份证号 身份证号:(可以为空) 公司现用判定。已有的身份证号差不多都能给通过,不存在的大部分能给报错....
身份证号码验证
大陆身份证号验证 function checkDlIdNumber(){ var idNumber = document.getElementById("idNumber").value; if(isStandard(idNumber)){ alert("
验证身份证
网络上的身份验证很多,如有雷同纯属巧合。呵呵! 我的也是根据网上的一些东西 自己写的一些东东,希望对大家有帮助 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)
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", "
新版身份证校验位算法
资料搜集,供参考 新身份证校验位算法 ftsun 18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份号码",另外GB11643-1999《公民身份号码》从实施之日起代替GB11643
简单的关于身份证(15位或者18位)合法性验证
简单的关于身份证(15位或者18位)合法性验证
176



被折叠的 条评论
为什么被折叠?



