js检查身份证号是否正确
转的,比较完善的验证身份证号的代码
/*
check(ID)验证身份证号码
返回值:0 : "是正确的身份证号"
1 : "身份证校验不符合求和模11=1这个等式",
2 : "身份证最后一位校验位有误",
3 : "身份证位数不正确",
4 : "年份错误",
5 : "月份错误",
6 : "日错误" */ function check(ID) {
var ck = new IDCard();
ck.check(ID);
return ck.errNum;
} function IDCard(ID) {
var me = this;
this.checkCode = new Array(1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2);
this.ID;
this.errNum = 0;
this.err = {
1 : "身份证校验不符合求和模11=1这个等式",
2 : "身份证最后一位校验位有误",
3 : "身份证位数不正确",
4 : "年份错误",
5 : "月份错误",
6 : "日错误"
};
this.err_msg = function() {
return (0 !== this.errNum) ? this.err[this.errNum] : null;
};
this.check = function(ID) {
this.errNum = 0;
this.ID = ID;
if (cardValidate()) {
if (!aiCheck()) this.errNum = 1;
if (!LastByteCheck()) this.errNum = 2;
return (0 === this.errNum) ? true: false;
} else {
return false;
}
};
function getNum(str) {
var re = /^[0]*([0-9]*)$/;
str.match(re);
return parseInt(RegExp.$1,10);
}
//对身份证位数,出生日期,初步验证
function cardValidate() {
var re = /^[0-9x]{15,18}$/i;
if (!re.test(me.ID)) {
me.errNum = 7;
return false;
}
if (15 == me.ID.length || 18 == me.ID.length) {
var realLen = 0;
if (18 == me.ID.length) realLen = 2;
var year = parseInt(me.ID.substr(6, 2 + realLen),10);
var month = getNum(me.ID.substr(8 + realLen, 2));
var day = parseInt(me.ID.substr(10 + realLen, 2),10);
if (4 == year.length) if (year < 1900 || year > 2050) me.errNum = 4;
if (month < 1 || month > 12) me.errNum = 5;
if (day < 1 || day > 31) me.errNum = 6;
return 0 === me.errNum;
} else {
me.errNum = 3;
return false;
}
}
//总和模11应该等于1
var aiCheck = function() {
var sum = 0;
for (var i = 1; i <= me.ID.length; i++) {
var ai = me.ID.substr(me.ID.length - i, 1);
ai = (ai.toLowerCase() == 'x') ? 10 : ai;
var wi = Math.pow(2, i - 1) % 11;
sum += parseInt(ai,10) * wi;
}
return 1 == sum % 11;
};
//最后一位校验,这个可以和aiCheck合在一起,减少一次循环
var LastByteCheck = function() {
var sum = 0;
for (var i = 2; i <= me.ID.length; i++) {
var ai = me.ID.substr(me.ID.length - i, 1);
ai = (ai.toLowerCase() == 'x') ? 10 : ai;
var wi = Math.pow(2, i - 1) % 11;
sum += parseInt(ai,10) * wi;
}
var checkCodeIndex = sum % 11;
var c = me.ID.substr(me.ID.length - 1, 1);
//alert(c+"=="+me.checkCode[checkCodeIndex]);
return c == me.checkCode[checkCodeIndex];
};
}
js检查身份证号是否正确的更多相关文章
- js验证身份证号,超准确
js验证身份证号,超准确 看程序前先来了解下身份证号的构成:身份证号分为两种,旧的为15位,新的为18位.身份证15位编码规则:dddddd yymmdd xx p 其中 dddddd:地区码 ...
- JS校验身份证号的合法性
前端表单中有身份证号的校验,下边是用JS来校验身份证号的合法性. 中国居民身份证号码编码规则 第一.二位表示省(自治区.直辖市.特别行政区). 第三.四位表示市(地级市.自治州.盟及国家直辖市所属市辖 ...
- Js 根据身份证号获取年龄-性别
参考:http://www.tuicool.com/articles/J7r2ien 方式一: $scope.GetAgeAndSexByIDNum = function (IdCardNO) { / ...
- js从身份证号中获取出生日期和性别
今天,在做移动端的项目中,按照设计稿的要求,是可以让用户自己输入出生日期的,我还很认真的用了刚刚知道的html5表单的日期类型,本想着终于不用日期插件就可以实现用户选择自己的出生日期了,可结果老大说, ...
- js 校验身份证号
根据地区编码.身份证格式.18位身份证需要验证最后一位校验位 //校验身份证 function IdentityCodeValid(code) { var city = { 11: "北京& ...
- js验证身份证号
/* * 身份证检测(格式.地区.生日.年龄范围) * code:检测字符串 rangeAge:年龄范围[格式为:25-55] * 返回值 0:为空 ,不为0则验证不通过 */ : : : : : : ...
- js 根据身份证号获取性别,年龄,等
$(function(){ $("#corpOwnerIdno").blur(function(){ //获取输入身份证号码 ...
- JS通过身份证号获取生日、年龄、性别
<script> function IdCard(UUserCard,num){ if(num==1){ //获取出生日期 birth=UUserCard.substring(6, 10) ...
- 身份证号正则校验(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 ...
随机推荐
- springboot~rabbitmq的队列初始化和绑定
配置文件,在rabbit中自动建立exchange,queue和绑定它们的关系 代码里初始化exchange 代码里初始化queue 代码里绑定exchange,queue和routekey 配置文件 ...
- 一个简洁的小H车调运模型
一个简洁的小H车调运模型 不久前, 帝都B城市到处都是小H车, 理想的小H车应该是布朗运动\均匀分布,可是现实上它们就是不均匀.于是有如下问题: 观察帝都 HD区SY村区域,将其划分成10个用车点,用 ...
- SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用
为什么要使用分布式系统? 容错 减少延迟/提高性能 可用性 负载均衡 总而言之,其实目的只有一个,”用户体验“. 什么是分布式系统? 分布式系统是由使用分发中间件连接的自治计算机组成的网络.它们有助于 ...
- 第三章 CLR如何解析引用类型
C#编译器将代码打包成托管模块后,接着会将这些模块合并成程序集,然后统一加载到一个具体的目录,CLR在这个目录查找并且加载所需要的DLL或者exe. 程序集分类:弱命名程序集和强命名程序集,强命名程序 ...
- Memcache的 简介
MemCache memcache是一套分布式的高速缓存系统.目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的网站访问速度提升效果十分显著,是一套开放源代码软件. 工作 ...
- Less与TypeScript的简单理解与应用,并使用WebPack打包静态页面
既然选择了远方,便只顾风雨兼程 __ HANS许 系列:零基础搭建前后端分离项目 系列:零基础搭建前后端分离项目 创建空项目 使用Less 使用TypeScript 使用WebPack 开始写项目 总 ...
- 学JAVA第十五天,方法重载及构造方法进一步了解
由于星期五生病了,所以就没写.今天上课,又来写了!!! 先来说方法的重载. 方法的重载就是有两个方法的方法名相同,但参数不一致,参数个数不一致,或参数的类型不一样. package pkg9;publ ...
- oracle非正常退出后重启实例
sqlplus /nolog 回车 conn / as sysdba 回车 startup 回车(如果被告知已启动,应先执行 shutdown immediate 回车)
- React 16.x 新特性思维导图
React 16版本相对于以前的版本做了很大的改动,下面是我整理的React 16.x 新特性的思维导图文件,欢迎围观和指导:
- packagereference 里面的资产是怎么回事?
<PackageReference Include="Newtonsoft.Json" Version="9.0.1"> <ExcludeAs ...