function checkIdcard(idcard) {
var Errors = new Array("", "身份证号码位数不对!!!", "身份证号码出生日期超出范围或含有非法字符!!!",
"身份证号码校验错误!!!", "身份证地区非法!!!");
var area = {
11 : "北京",
12 : "天津",
13 : "河北",
14 : "山西",
15 : "内蒙古",
21 : "辽宁",
22 : "吉林",
23 : "黑龙江",
31 : "上海",
32 : "江苏",
33 : "浙江",
34 : "安徽",
35 : "福建",
36 : "江西",
37 : "山东",
41 : "河南",
42 : "湖北",
43 : "湖南",
44 : "广东",
45 : "广西",
46 : "海南",
50 : "重庆",
51 : "四川",
52 : "贵州",
53 : "云南",
54 : "西藏",
61 : "陕西",
62 : "甘肃",
63 : "青海",
64 : "宁夏",
65 : "新疆",
71 : "台湾",
81 : "香港",
82 : "澳门",
91 : "国外"
}
var idcard, Y, JYM;
var S, M;
var idcard_array = new Array();
idcard_array = idcard.split("");
// 地区检验
if (area[parseInt(idcard.substr(0, 2))] == null)
return Errors[4];
// 身份号码位数及格式检验
switch (idcard.length) {
case 15 :
if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0
|| ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard
.substr(6, 2)) + 1900)
% 4 == 0)) {
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;// 测试出生日期的合法性
} else {
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;// 测试出生日期的合法性
}
if (ereg.test(idcard))
return Errors[0];
else
return Errors[2];
break;
case 18 :
// 18位身份号码检测
// 出生日期的合法性检查
// 闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
// 平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
if (parseInt(idcard.substr(6, 4)) % 4 == 0
|| (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard
.substr(6, 4))
% 4 == 0)) {
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;// 闰年出生日期的合法性正则表达式
} else {
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;// 平年出生日期的合法性正则表达式
}
if (ereg.test(idcard)) {// 测试出生日期的合法性
// 计算校验位
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10]))
* 7
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11]))
* 9
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12]))
* 10
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13]))
* 5
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14]))
* 8
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15]))
* 4
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16]))
* 2 + parseInt(idcard_array[7]) * 1
+ parseInt(idcard_array[8]) * 6
+ parseInt(idcard_array[9]) * 3;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y, 1);// 判断校验位
if (M == idcard_array[17])
return Errors[0]; // 检测ID的校验位
else
return Errors[3];
} else
return Errors[2];
break;
default :
return Errors[1];
break;
}
}
//如果身份证号合法返回'',不合法返回相应的错误提示。
分享到:
相关推荐
网上很多关于身份证校验的javascript代码,不过都没给全,以下是我添加全了函数一起提供的,希望对大家有所帮助。 javascript身份证号码验证-支持18位带x身份证。
15位或18位身份证javascript验证函数
本文主要介绍了身份证号的组成规则,如何去校验身份证号,对正则表达式简单的制作了介绍。另外说了load()函数和post()函数的使用方法,另外说明了完整的ajax()技术。
非常全的校验资料,包括表单不能为空,是否是数字,邮箱,身份证号等的验证
js大全 . 1.1 全是数字.. 3 1.2 限制 期限 不能大于 100 年.. 4 1.3 将日期格式由yyyy-MM-dd,转换为yyyymmdd,...2.12 计算天数差的函数. 125 2.13 把结束日期月份加上月末日期.. 125 2.14 检验输入的日期yyyy-MM 126
6.1.1.2 JavaScript函数的奥妙——魔法代码 6.1.2 函数的调用 6.2 函数的参数 6.2.1 形参与实参 6.2.2 Arguments对象 6.2.2.1 一个使用Arguments对象检测形参的例子 6.2.2.2 一个使用...
该javaScript库主要包括了如下模块: 1、手机号码校验; 2、身份证校验;3、邮箱校验; 4、字符串常用类; 5、简单四则运算;6、正则表达式生成工具类; 7、日期工具; 8、url工具;9、数组工具类;10、对象工具类
不错的一个用正则检测输入的字符是否为数字的代码,也是一种并不常见的写法 Untitled Document [Ctrl+A 全选 注:如需引入外部Js需刷新...数字,身份证等等js函数集合JavaScript基于正则表达式的数字判断函数j
*JavaScript Document * タイトル: JS常用処理函数</p> * 説明: JS常用処理函数</p> * 著作権: Copyright (c) 2007-4-30</p> * 会社: 杭州恒生電子株式会社</p> * @担当者: 林顔双 * @version 1.0 * ...
校验身份证号(校验日期格式) 校验密码强度 匹配空格 前瞻与后顾 贪婪与懒惰 注意事项 相关资料 简述 元字符 引自:https://www.imooc.com/learn/1218 前瞻与后顾 主要函数 Python 1、re.match() 尝试从字符串的...
js大全 . 1.1 全是数字.. 3 1.2 限制 期限 不能大于 100 年.. 4 1.3 将日期格式由yyyy-MM-dd,转换为yyyymmdd,...2.12 计算天数差的函数. 125 2.13 把结束日期月份加上月末日期.. 125 2.14 检验输入的日期yyyy-MM 126
您可能感兴趣的文章:javascript 手机号码正则表达式验证函数JS正则表达式验证数字代码JavaScript正则表达式验证身份证号码是否合法(两种方法)jquery正则表达式验证(手机号、身份证号、中文名称)邮箱地址正则...
对中文、英文、数字、整数、实数、Email地址格式、基于HTTP协议的网址格式、电话号码格式、手机号码格式、货币格式、邮政编码、身份证号码、QQ号码、日期等等这些控制,别的表单校验控件是代码里写死的,而...
对中文、英文、数字、整数、实数、Email地址格式、基于HTTP协议的网址格式、电话号码格式、手机号码格式、货币格式、邮政编码、身份证号码、QQ号码、日期等等这些控制,别的表单校验控件是代码里写死的,而...
对中文、英文、数字、整数、实数、Email地址格式、基于HTTP协议的网址格式、电话号码格式、手机号码格式、货币格式、邮政编码、身份证号码、QQ号码、日期等等这些控制,别的表单校验控件是代码里写死的,而...
Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的一些基础知识 在组件之间实现事务和异步...