身份证号校验原理及JavaScript实现
身份证号是中华人民共和国公民的身份编号,有15位(第一代身份证)和18位两种。第一代身份证所采用的15位身份证号,由于没有校验位,故无法进行验证,这里我们讨论现今绝大多数人所使用的18位身份证号的验证方法。15位身份证号也可以通过下面的原理转换成18位身份证号,这里就不列出方法了~ 18位身份证号码的构成如下:
XXXXXXXXXXXXXXXXXX第1-6位:1-2位表示省级行政区代码;3-4位表示地级行政区代码;5-6位表示县级行政区代码第7-14位:出生年月日第15-17位:顺序码,其中奇数分配给男性,偶数分配给女性第18位:校验码
| i | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
| Wi | 7 | 9 | 10 | 5 | 8 | 4 | 2 | 1 | 6 | 3 | 7 | 9 | 10 | 5 | 8 | 4 | 2 | 1 |
m)。
function checkId(){
var code = /* 这里是要校验的身份证号 字符串或者数字都可以 */;
if(code.length == 18){
if(checkMod(code) == true){
alert("正确");
}
else alert("输入的身份证号不正确");
}
else alert("输入的身份证号格式错误。");
}
function checkMod(code){
var arr = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],//从第18位到第2位的Wi
proof = code.charAt(17).toUpperCase() == "X" ? 10 : parseInt(code.charAt(17)),//得到输入身份证号的最后一位并将X转换为10
sum = 0;//前十七位的校验和
for(var i = 0;i < arr.length;i++){
sum += code.charAt(i) * arr[i];
}
return (proof + sum - 1) % 11 == 0;
}
完整Demo下载:
身份证号校验原理及JavaScript实现的更多相关文章
- Regexp-Utils:身份证号校验
ylbtech-Regexp-Utils:身份证号校验 1.返回顶部 1.方法 var idCardNoUtil = { /*省,直辖市代码表*/ provinceAndCitys: { 11: &q ...
- 使用 python 进行身份证号校验
使用 python 代码进行身份证号校验 先说,还有很多可以优化的地方. 1.比如加入15位身份证号的校验,嗯哼,15位的好像没有校验,那就只能提取个出生年月日啥的了. 2.比如判断加入地址数据库,增 ...
- Javascript 香港身份证号校验
<!DOCTYPE html> <html> <head> <title>香港身份证校验码计算</title> </head> ...
- java身份证号校验
package com.pt.modules.contract.utils; import java.text.ParseException; import java.text.SimpleDateF ...
- 锋利的js之验证身份证号
我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构 公民 ...
- Java实现身份证号码校验
二话不说,直接上代码. package hope.identitycodecheck.demo; import java.text.DateFormat; import java.text.Simpl ...
- javascript实现验证身份证号的有效性并提示
javascript实现验证身份证号的有效性并提示 function nunber(allowancePersonValue){ if(allowancePersonValue=="身份证号 ...
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle 1. 主键1 2. uniq index2 3. ...
- 身份证号正则校验(js校验+JAVA校验)
js校验身份证号[15位和18位] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...
随机推荐
- Linux 下 wordpress 无法安装插件
修改目录权限mkdir -p wp-content/tmpchown -R www:www wp-contentchmod -R 777 wp-content 配置修改wp-config.php搜索 ...
- K8s核心概念详解
kubernetes(通常简称为K8S),是一个用于管理在容器中运行的应用的容器编排工具. Kubernetes不仅有你所需要的用来支持复杂容器应用的所有东西,它还是市面上最方便开发和运维的框架. K ...
- bzoj1007/luogu3194 水平可见直线 (单调栈)
先按斜率从小到大排序,然后如果排在后面的点B和前面的点A的交点是P,那B会把A在P的右半段覆盖掉,A会把B在P的左半段覆盖掉. 然后如果我们现在又进来了一条线,它跟上一条的交点还在上一条和上上条的左边 ...
- bzoj4518/luogu4072 征途(斜率优化dp)
首先推一波公式: 设f[t][i]为第t天以i为结尾,这时已经算了的最小公差$*m^2$ 设s[i]为1到i的和 $$f[t][i]=min\{f[t-1][j]+m*(s[i]-s[j]-\frac ...
- Linux 系统缓存机制学习
前言:本文为参考他人的文章,是一篇学习记录型博客.理解linux的系统缓存机制有助于理解elasticsearch实时更新的原理. 一.缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲 ...
- DownloadProvider 源码详细分析
DownloadProvider 简介 DownloadProvider 是Android提供的DownloadManager的增强版,亮点是支持断点下载,提供了“开始下载”,“暂停下载”,“重新下载 ...
- A1035. Password
To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...
- 多线程状态下调用SimpleDateFormat.format()抛出 ArrayIndexOutOfBoundsException 异常
本来想在类的顶部设置一个 静态的SimpleDateFormat常量 public final static DateFormat dateFormatGMT = new SimpleDateForm ...
- 2018.9青岛网络预选赛(H)
传送门:Problem H https://www.cnblogs.com/violet-acmer/p/9664805.html 题意: BaoBao在一条有刻度的路上行走(哈哈,搞笑),范围为 [ ...
- ps 中取消网格线的吸附功能,其实是对齐功能
ps 中取消网格线的吸附功能,其实是对齐功能