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 ...
随机推荐
- Android中EditText显示明文与密文的两种方式
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录输入框显示.隐藏密码的简单布局以及实现方式. 效果图 代码分析 方式一 /**方式一:*/ private void sh ...
- OO Unit2多线程电梯总结博客
OO Unit2多线程电梯总结博客 传说中的电梯居然就这样写完了-撒花
- 机器学习之决策树二-C4.5原理与代码实现
决策树之系列二—C4.5原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9435712.html I ...
- jquery获取元素(父级的兄弟元素的子元素)
一.获取父级元素 使用jquery获取父级元素: parent() 例如:$(this).parent('ul'); 二.获取同级元素 使用jquery获取同级元素:siblings() 例如:$(t ...
- 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记 - 索引
大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生. 智能语音交互市场近年来发展迅速,其典型的应用之一智能音箱产品如今已走入千家万户,深受大家 ...
- [Javascript] js的类和对象
类 graph LR 类-->构造函数 类-->prototype对象 类-->instanceof运算符 类-->constructor属性 类-->isPrototy ...
- DS控件库 DS按钮多种样式
在DS控件库(DSControls)中,DS按钮的功能非常多,通过设置不同的属性值来使按钮呈现不同的效果.DS按钮的常用属性如下: 使用不同的属性调出不同的外观样式示例
- C#实现.ini文件读写操作
1.ini文件是什么? 见百度百科:https://baike.baidu.com/item/ini%E6%96%87%E4%BB%B6/9718973?fr=aladdin 2.C#语 ...
- 解决Win10系统下 C# DateTime 出现星期几的问题
昨天晚上写代码的时候偶然发现 DateTime 里出现了星期几,当时一阵凌乱,去网上百度没有详细解决办法,很多人说可以用用 ToString 解决. 也有部分人说可以修改系统时间的显示,我打算试一下看 ...
- 初学Linux要掌握的命令
echo:打印,或者直接输出指定的字符串 语法:echo (选项) (参数) 选项:/a: 发出警告声 /b: 删除前一个字符 /c: 最后不加上换行符号 /f: 换行但光标仍旧停留在原来的位置 /n ...