验证身份证号码

基于Python实现身份证号码验证 基于Python实现身份证号码验证 摘要: 该设计主要使用python语言来实现身份证号验证程序。它运用 tkinter模块生成GUI界面。当用户输入身份证号,按下检查按钮,即可判断身份证号是否正确。该程序简洁,灵活,执行效率高。 关键词: 身份证号; python;tkinter 1 概述 1.1背景 中华人民共和国居民身份证是国家法定的证明公民个人身份的有效证件。在当今社会,有一些不法分子为了躲避法律追捕,伪造身份证的现象也是很普遍的,为了验证公民的身份证号码是否符合国家标准,设计一个身份证号码校验 阅读详情
function isChinaIDCard(StrNo)
{
    StrNo = StrNo.toString();
    if(StrNo.length == 15)
    {
        if(!isValidDate("19"+StrNo.substr(6,2),StrNo.substr(8,2),StrNo.substr(10,2)))
        {return false;}
    }
    else if(StrNo.length == 18)
    {
        if (!isValidDate(StrNo.substr(6,4),StrNo.substr(10,2),StrNo.substr(12,2))){return false;}
    }
    else
    {
        alert("输入的身份证号码必须为15位或者18位!");
        return false;
    }

    if (StrNo.length==18)
    {
        var a,b,c
        if (!isNumber(StrNo.substr(0,17)))
        {alert("身份证号码错误,前17位不能含有英文字母!");return false;}
        a=parseInt(StrNo.substr(0,1))*7+parseInt(StrNo.substr(1,1))*9+parseInt(StrNo.substr(2,1))*10;
        a=a+parseInt(StrNo.substr(3,1))*5+parseInt(StrNo.substr(4,1))*8+parseInt(StrNo.substr(5,1))*4;
        a=a+parseInt(StrNo.substr(6,1))*2+parseInt(StrNo.substr(7,1))*1+parseInt(StrNo.substr(8,1))*6;
        a=a+parseInt(StrNo.substr(9,1))*3+parseInt(StrNo.substr(10,1))*7+parseInt(StrNo.substr(11,1))*9;
        a=a+parseInt(StrNo.substr(12,1))*10+parseInt(StrNo.substr(13,1))*5+parseInt(StrNo.substr(14,1))*8;
        a=a+parseInt(StrNo.substr(15,1))*4+parseInt(StrNo.substr(16,1))*2;
        b=a%11;
        if (b==2) //最后一位为校验位
        {
            c=StrNo.substr(17,1).toUpperCase(); //转为大写X
        }
        else
        {
            c=parseInt(StrNo.substr(17,1));
        }
        switch(b)
        {
            case 0: if ( c!=1 ) {alert("身份证好号码校验位错:最后一位应该为:1");return false;}break;
            case 1: if ( c!=0 ) {alert("身份证好号码校验位错:最后一位应该为:0");return false;}break;
            case 2: if ( c!="X") {alert("身份证好号码校验位错:最后一位应该为:X");return false;}break;
            case 3: if ( c!=9 ) {alert("身份证好号码校验位错:最后一位应该为:9");return false;}break;
            case 4: if ( c!=8 ) {alert("身份证好号码校验位错:最后一位应该为:8");return false;}break;
            case 5: if ( c!=7 ) {alert("身份证好号码校验位错:最后一位应该为:7");return false;}break;
            case 6: if ( c!=6 ) {alert("身份证好号码校验位错:最后一位应该为:6");return false;}break;
            case 7: if ( c!=5 ) {alert("身份证好号码校验位错:最后一位应该为:5");return false;}break;
            case 8: if ( c!=4 ) {alert("身份证好号码校验位错:最后一位应该为:4");return false;}break;
            case 9: if ( c!=3 ) {alert("身份证好号码校验位错:最后一位应该为:3");return false;}break;
            case 10: if ( c!=2 ){alert("身份证好号码校验位错:最后一位应该为:2");return false;}
        }
    }
    else
    {//15位身份证号
        if (!isNumber(StrNo)) {alert("身份证号码错误,前15位不能含有英文字母!");return false;}
    }
    return true;
}

function isValidDate(iY, iM, iD)
{
    if (iY>2200 || iY<1900 || !isNumber(iY))
    {
        alert("输入身份证号,年度"+iY+"非法!");
        return false;
    }
    if (iM>12 || iM<=0 || !isNumber(iM))
    {
        alert("输入身份证号,月份"+iM+"非法!");
        return false;
    }
    if (iD>31 || iD<=0 || !isNumber(iD))
    {
        alert("输入身份证号,日期"+iD+"非法!");
        return false;
    }
    return true;
}
/**
* 验证是不是数字
*/
function isNumber(oNum)
{
    if(!oNum) return false;
    var strP=/^\d+(\.\d+)?$/;
    if(!strP.test(oNum)) return false;
    try
    {
        if(parseFloat(oNum)!=oNum) return false;
    }
    catch(ex)
    {
        return false;
    }
    return true;
}

function formSubmit()
{
    var EmailString = document.getElementById("email").value;
    var IdString = document.getElementById("idCard").value;
    var reEmail=/^[ _a-z0-9- ]+(\.[a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/;
    if(!reEmail.exec(EmailString ) && EmailString !="")
    {
        alert("电子邮件字段不合法!");
        return false;
    }

  
    if(isChinaIDCard(IdString ))
    {
        return true;    
    }
    else
    {
        return false;
    }
    
 }
身份证号码验证程序 描述:验证输入的身份证号码是否正确; 实现代码: #include #include using namespace std; int main() { string num; while(1) { loop: cout<<"请输入你要验证的身份证号码:"<<endl; cin>>num; if(num.l 阅读详情

相关推荐

身份证号码验证方法

************************* * 身份证号码验证方法 ************************* *PARAMETERS SFZ CLEAR CLOSE TABLES **oldgzq=select() LOCAL RQ,XB,ZFZH SFZ="34052219870228001X" XB="男" SFZH="" *----身份证号码位数验证

lygcw9602的专栏 3321

身份证号码正则表达式及校验方法

身份证15位编码规则:dddddd yymmdd xx p dddddd:6位地区编码 yymmdd: 出生年(两位年)月日,如:910215 xx: 顺序编码,系统产生,无法确定 p: 性别,奇数为男,偶数为女 身份证18位编码规则:dddddd yyyymmdd xxx y dddddd:6位地区编码 yyyymmdd: 出生年(四位年)月日,如:19910215 xxx:顺序编码,系统产生,...

郑小let的博客 1万+

验证身份证号码是否为正确值

今天(2018-04-09)在整理正则表达时,有一个关于身份证号码的正则匹配。最简单的不动脑子的匹配方式为:^[1-9]\d{16}[\d|x]$,但是这样很容易伪造一个身份证号来骗过电脑,于是加强版的正则匹配为:^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$虽然加强版的正...

24min的博客 1万+

正则表达式-身份证号码验证

身份证号码验证 1.第一代身份证15位: /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$/ 例: if (sfzhmcode.length == 15 &amp;&amp; !(/^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30...

loa_loa的博客 5万+

JavaScript实现身份证号码验证的实战项目

校验码的计算方法相对复杂,涉及到了一种加权求和然后模运算的流程。计算时,身份证号码前17位数字按特定的顺序和权重相乘,之后将得到的乘积相加。将这个总和除以11,取余数。根据余数和校验码对照表,可以得到校验码的具体值。这种方式有效地提高了身份证号码的校验能力,避免了一些常规错误的发生。

weixin_42577243的博客 1072

CRaxsRat v7.6 安装与使用教程(附工具下载)

摘要:本文介绍远程管理工具CRaxsRat v7.6的合法应用与基本操作,强调仅限授权环境使用。该工具支持多客户端管理、TLS加密及文件/进程控制等功能,适用于内网维护与安全测试。安装需Windows 10/11系统及.NET 4.8,步骤包括解压运行、配置监听端口及生成客户端。文中提醒防火墙设置与杀软误报问题,并重申禁止非法用途,建议在虚拟机或隔离环境学习使用。

lzj781210的博客 3789

Java 银行卡和身份证号根据校验位验证是否合法

1、银行卡号码的校验/** * 校验银行卡卡号 * @param cardId * @return */ public static boolean checkBankCard(String cardId) { char bit = getBankCardCheckCode(cardId.substring

奋斗的小欣 2078

SPSS回归分析(线性:一元(简单)和多重;非线性logistic)

SPSS线性回归分析回归分析一、线性模型(针对连续因变量,线性关系)(一)简单线性回归(一元线性回归)1、绘制散点图2、建立简单(一元)线性回归模型3、建立模型后,检查预测结果(二)多重回归分析1、绘制矩阵分布散点图(论文专用你懂的)2、建立多重回归模型point 1:自变量加入方法:逐步(步进)法3、建立模型后,检查预测结果二、非线性模型(将非线性问题转换为线性问题)1、logistic分析的回归模型1.1 建立回归模型1.2 利用回归模型进行预测 根据之前的学习,通过评价实验得到了主观数据, 通过 描述

weixin_44394352的博客 5万+

校验身份证号码

身份证格式判断 isIDCard(obj) { var aCity = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23...

sinat_15110721的博客 431

一文学会Cadence Sigrity PDN仿真——硬件新手小白都能看懂的保姆级教程

电源完整性的仿真,实际上是在仿真以及优化系统中的等效串联电阻。知道了仿真以及优化的目标之后,接下来就是要弄明白这个串联电阻从哪儿来以及怎么优化。整个系统中的串联电阻实际上由三部分组成:没有相位的阻抗,有相位的容抗和感抗,得益于相位,在某个特定的频点,容抗和感抗会大小相等,相位相反而相互抵消,这时候整个系统中就剩下了阻抗,所以整个系统的串联电阻达到了一个最低值,这种现象就是----谐振。当系统处于谐振点时候,整个系统会有一个最小的串联电阻,所以第一个优化电阻的手段就是让谐振来的更频繁一点。

学习帮的博客 2万+

STM32 HAL库定时器中断里读编码器速度准吗?聊聊MG310电机的测速与防溢出处理

本文探讨了STM32 HAL库在定时器中断中读取编码器速度的精度问题,特别针对MG310电机的测速与防溢出处理提供了解决方案。通过对比定时中断法和编码器模式的性能,揭示了硬件编码器接口在降低误差和CPU占用率方面的优势,并详细介绍了CubeMX配置技巧和防溢出处理的工程实践。

weixin_28720767的博客 401

身份证验证

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/1999/xhtml" >1、号码的结构    公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。2、地址码    表示编码对象常住户口所

空虚男孩--南方狼! 946

SuperPoint + LightGlue实战:低纹理墙面重建保姆级教程(附完整代码)

本文提供了一份针对低纹理墙面三维重建的实战教程。通过详细解析SuperPoint与LightGlue的核心参数调优,指导读者如何有效提取并匹配低纹理目标的特征点,并结合COLMAP完成从稀疏到稠密的重建流程,最终实现高精度建模。

weixin_29034963的博客 223

身份证号码验证

身份证号码验证文件–idCard.js /* * 身份证15位编码规则:dddddd yymmdd xx p * dddddd:6位地区编码 * yymmdd: 出生年(两位年)月日,如:910215 * xx: 顺序编码,系统产生,无法确定 * p: 性别,奇数为男,偶数为女 * ...

woochon的博客 1726

miRNA测序数据生信分析——第二讲,数据库下载整理

一个非编码RNA的整合数据库,可用来识别鉴定各种类型的ncRNA。提供的是ncRNA在基因组上的基因序列,而非转录成熟ncRNA的序列。最新版:2022-11-02Rfam数据库中ncRNA类型分三大类:Cis-reg和Gene和Intron。这三大类又有子类。一个提供包括miRNA序列数据、注释、预测基因靶标等信息的全方位数据库,是存储miRNA信息最主要的公共数据库之一。最新版:2018-12-01。

weixin_44616693的博客 4098

睿尔曼超轻量仿人机械臂--机械臂接口介绍

本文介绍了睿尔曼超轻量仿人机械臂的控制器接口及末端接口。

realman_Rop的博客 3434

C#身份证号码验证代码

校验码是识别一个身份证号码是否真实存在的重要的依据。那我们要如何通过校验码来判断一个身份证号码是否真实的呢? 校验码如何判断身份证号码真伪呢?我们来看看具体计划过程。 第一步:将身份证号码的第1位数字与7相乘;将身份证号码的第2位数字与9相乘;将身份证号码的第3位数字与10相乘;将身份证号码的第4位数字与5相乘;将身份证号码的第5位数字与8相乘;将身份证号码的第6位数字与4相乘;将身份证号码的第7位数字与2相乘;将身份证号码的第8位数字与1相乘;将身份证号码的第9位数字与6相乘;将身份证号码的第10位数字与

速冻的博客 3266

DRV8311HRRWR直流无刷(BLDC)电机驱动原理图设计

DRV8311HRRWR集成三个MOSFET 半H桥,用于驱动三相无刷直流电机(BLDC),适用于5V、9V、12V或18V直流电源轨或1S至4S电池供电应用。内部集成三个具有集成电流感测功能的电流感测放大器(CSA),可感测BLDC电机的三相电流,从而实现FOC和电流控制系统设计方案。集成保护特性:VM 欠压锁定 (UVLO)、 电荷泵欠压 (CPUV)、过流保护 (OCP)、热警告和热关断 (OTW/OTSD)、故障条件指示引脚 (nFAULT)支持 1.8V、3.3V 和 5V 逻辑输入。

zhusl6688的博客 1227

JavaScript—身份证号码验证

身份证号码验证 var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",             21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",             33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",             42:"湖

cherrychen1228的专栏 519

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

身份证号码的验证

身份证号码的验证 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="../js/jquery-1.8.2.min.js"></script> </head> <body> <input name="name" id="name" onchange=

qq_44027513的博客 416

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

身份证号码解析,验证工具,

import java.text.SimpleDateFormat; import java.util.Date; /** * 身份证号码,可以解析身份证号码的各个字段,以及验证身份证号码是否有效 * 身份证号码构成:6位地址编码+8位生日+3位顺序码+1位校验码 * * @author liuex * */ public class IDCard { /

︶ㄣ 独白 灬 729

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jQuery验证身份证号码

周末在家很宅,除了玩游戏就是吃好吃的,基本没怎么学习,哈哈,编辑代码之前,先附上一张今天中午做的美食图,自己买的菜和调料,不要太羡慕哈。 以下是一个大家都会的小知识点,jQuery验证身份证号码,老生常谈的问题了,不过对于记忆不好理解能力又不够的我来说,还是要记录一下下了。 <!DOCTYPE html> <...

祈澈菇凉 1717

华为机试—身份证号码验证

我国公民的身份证号码特点如下: 1、 长度为18位; 2、 第1~17位只能为数字; 3、 第18位可以是数字或者小写英文字母x。 4、 身份证号码的第7~14位表示持有人生日的年、月、日信息。 例如:511002198808080111或51100219880808011x。请实现身份证号码合法性判断的函数。除满足以上要求外,需要对持有人生日的年、月、日

小地盘的诺克萨斯 3987

python正则抓取身份证号码,验证18位身份证号码是否正确

python正则抓取身份证号码 ID_c=r'(?<!\d)(?:(?:([1-9]\d{5}(?:18|19|(?:[23]\d))\d{2}(?:(?:0[1-9])|(?:10|11|12))(?:(?:[0-2][1-9])|10|20|30|31)\d{3}[0-9Xx])(?!\d))|([1-9]\d{5}\d{2}(?:(?:0[1-9])|(?:10|11|12))(?:(...

qq_31720305的博客 7692
上一篇: 对table设置边框的几种方法
下一篇: css 制造图片边框效果
Blocksom
博客等级 码龄19年 16粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值