JS身份证验证
- window.checkIdcard = function (idcard) {
- var errors = new Array(
- "yes",
- "请检查输入的证件号码是否正确", //"身份证号码位数不对!",
- "请检查输入的证件号码是否正确", //"身份证号码出生日期超出范围或含有非法字符!",
- "请检查输入的证件号码是否正确", //"身份证号码校验错误!",
- "请检查输入的证件号码是否正确" //"身份证地区非法!"
- );
- var area = { : "北京", : "天津", : "河北", : "山西", : "内蒙古", : "辽宁", : "吉林", : "黑龙江", : "上海", : "江苏", : "浙江", : "安徽", : "福建", : "江西", : "山东", : "河南", : "湖北", : "湖南", : "广东", : "广西", : "海南", : "重庆", : "四川", : "贵州", : "云南", : "西藏", : "陕西", : "甘肃", : "青海", : "宁夏", : "新疆", : "台湾", : "香港", : "澳门", : "国外" }
- var y, jym;
- var s, m;
- var idcardArray = new Array();
- idcard = idcard.replace(/(^\s*)|(\s*$)/g, "");
- idcardArray = idcard.split("");
- //地区检验
- if (area[parseInt(idcard.substr(, ))] == null) return errors[];
- //身份号码位数及格式检验
- var ereg;
- switch (idcard.length) {
- case :
- if ((parseInt(idcard.substr(, )) + ) % == || ((parseInt(idcard.substr(, )) + ) % == && (parseInt(idcard.substr(, )) + ) % == )) {
- ereg = /^[-][-]{}[-]{}((||||||)([-]|[-][-]|[-])|(|||)([-]|[-][-]|)|([-]|[-][-]))[-]{}$/; //测试出生日期的合法性
- } else {
- ereg = /^[-][-]{}[-]{}((||||||)([-]|[-][-]|[-])|(|||)([-]|[-][-]|)|([-]|[-]|[-]))[-]{}$/; //测试出生日期的合法性
- }
- if (ereg.test(idcard)) return errors[];
- else return errors[];
- case :
- //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(, )) % == || (parseInt(idcard.substr(, )) % == && parseInt(idcard.substr(, )) % == )) {
- ereg = /^[-][-]{}(|)[-]{}((||||||)([-]|[-][-]|[-])|(|||)([-]|[-][-]|)|([-]|[-][-]))[-]{}[-9Xx]$/; //闰年出生日期的合法性正则表达式
- } else {
- ereg = /^[-][-]{}(|)[-]{}((||||||)([-]|[-][-]|[-])|(|||)([-]|[-][-]|)|([-]|[-]|[-]))[-]{}[-9Xx]$/; //平年出生日期的合法性正则表达式
- }
- if (ereg.test(idcard)) {//测试出生日期的合法性
- //计算校验位
- s = (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
- + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
- + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
- + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
- + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
- + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
- + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
- + parseInt(idcardArray[]) *
- + parseInt(idcardArray[]) *
- + parseInt(idcardArray[]) * ;
- y = s % ;
- m = "F";
- jym = "10X98765432";
- m = jym.substr(y, ); //判断校验位
- if (m == idcardArray[]) return errors[]; //检测ID的校验位
- else return errors[];
- }
- else return errors[];
- default:
- return errors[];
- }
- }
JS身份证验证的更多相关文章
- 【原创】贡献一个项目中用到的js身份证验证-超级准!!!
前言 百度百科解释:身份证号码 首先贡献一个大神的链接:js验证身份证超准 代码 function checkIdcard(idcard) { var Errors = new Array( &quo ...
- js身份证验证类
var IDCard = function () { //---------------------------------------------------------- // 功能:根据身份证号 ...
- js身份证验证-超级准!!!
function checkIdcard(idcard) { var Errors = new Array( "验证通过!", "身份证号码位数不对!", &q ...
- js身份证验证代码
var idCardNoUtil = { provinceAndCitys: {11:"北京",12:"天津",13:"河北",14:&qu ...
- 身份证验证JS代码
身份证验证JS程序function checkidcardfun(code) { var city = {11: "北京", 12: "天津", 13: &qu ...
- Js完美验证15/18身份证,Js验证身份证,支持15/18位
Js完美验证15/18身份证,Js验证身份证,支持15/18位 >>>>>>>>>>>>>>>>> ...
- js邮箱验证,身份证验证,正则表达式
邮箱验证: html部分: 邮箱验证:<input type="text" id="mail" value="" / onkeyup= ...
- 基于JS的身份证验证(完整版)
var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加权因子 var ValideCode = [ 1, 0 ...
- JS脚本验证大全
/** * 2009-10-01 * 贺 臣 * 情 缘 * js各种表单数据验证 *//***************************************************** ...
随机推荐
- Genymotion虚拟镜像下载慢或者失败的解决办法
Genymotion虚拟镜像下载慢或者失败的解决办法 http://files2.genymotion.com/dists/8.0.0/ova/genymotion_vbox86p_8.0_18061 ...
- 软件包管理:rpm命令管理-校验和文件提取
校验主要用于判断文件是否做了更改 修改标志: 会用-V,会看输出结果即可. 当有误操作,比如删了某一个文件,只需知道他属于哪一个rpm包,可用提取找回覆盖就行.并不把整个rpm包安装,而是提取其中的某 ...
- Apache+php+mysql环境配置
Apache+PHP+MySQL环境搭建 标题格式 正文格式 阶段性完成格式 正文中强调格式 ————————————————————————————— 前语:本文是从我写过的doc文档迁移过来的,由 ...
- PKU2418_树种统计(map应用||Trie树)
Description Hardwoods are the botanical group of trees that have broad leaves, produce a fruit or nu ...
- Java设计模式应用——组合模式
组合模式实际上是一种树形数据结构.以windows目录系统举例,怎么样用java语言描述一个文件夹? 定义一个文件夹类,文件夹类中包含若干个子文件类和若干个文件类. 进一步抽象,把文件夹和文件都看做节 ...
- 让360双核浏览器默认极速模式,避免采用IE模式无法正常访问html5网页的解决办法
让360双核浏览器默认极速模式,避免采用IE模式无法正常访问html5网页的解决办法 用Meta标签代码让360双核浏览器默认极速模式不是兼容模式<meta name="rendere ...
- java多线程----拒绝策略
本章介绍线程池的拒绝策略.内容包括:拒绝策略介绍拒绝策略对比和示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3512947.html 拒绝策略介绍 ...
- web前端----JavaScript的DOM(三)
一.JS中for循环遍历测试 for循环遍历有两种 第一种:是有条件的那种,例如 for(var i = 0;i<ele.length;i++){} 第二种:for (var i in l ...
- C++设计模式 之 “接口隔离” 模式:Facade、Proxy、Mediator、Adapter
“接口隔离”模式 在组建构建过程中,某些接口之间之间的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接(稳定)接口,来隔离本来相互紧密关联的接口是一种常见的解决方案. 典型模式 #Facad ...
- Rubin-Miller与Pollard Rho
两个没什么卵用的算法. 只放一下模板: BZOJ3667 //BZOJ 3667 //by Cydiater //2017.2.20 #include <iostream> #includ ...