javascript实现验证身份证号的有效性并提示

function nunber(allowancePersonValue){
 if(allowancePersonValue=="身份证号"){
 $("#span_username").show();
 $("#span_username").html("身份证号不能为空");
 return false;
 }
 //校验长度,类型
 else if(isCardNo(allowancePersonValue) === false)
 {
$("#span_username").show();
 $("#span_username").html("您输入的身份证号码不正确,请重新输入");
 return false;
 }
 //检查省份
 else if(checkProvince(allowancePersonValue) === false)
 {
 $("#span_username").show();
 $("#span_username").html("您输入的身份证号码不正确,请重新输入");
 return false;
 }
 //校验生日
 else if(checkBirthday(allowancePersonValue) === false)
 {
 $("#span_username").show();
 $("#span_username").html("您输入的身份证号码生日不正确,请重新输入");
 return false;
 }
 //检验位的检测
 else if(checkParity(allowancePersonValue) === false)
 {
 $("#span_username").show();
 $("#span_username").html("您的身份证校验位不正确,请重新输入");
 return false;
 }else{
 $("#span_username").hide();
 return true;
 } 

} 

//身份证省的编码
var vcity={ 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:"国外"
    }; 

//检查号码是否符合规范,包括长度,类型
function isCardNo(card){
 //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
 var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;
 if(reg.test(card) === false){
 //alert("demo");
 return false;
 }
 return true;
} 

//取身份证前两位,校验省份
function checkProvince(card){
 var province = card.substr(0,2);
 if(vcity[province] == undefined){
 return false;
 }
 return true;
} 

//检查生日是否正确
function checkBirthday(card){
 var len = card.length;
 //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
 if(len == ‘15‘){
   var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
   var arr_data = card.match(re_fifteen);
   var year = arr_data[2];
   var month = arr_data[3];var day = arr_data[4];var birthday =newDate(‘19‘+year+‘/‘+month+‘/‘+day);return verifyBirthday(‘19‘+year,month,day,birthday);}//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X if(len ==‘18‘){var re_eighteen =/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;var arr_data = card.match(re_eighteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday =newDate(year+‘/‘+month+‘/‘+day);return verifyBirthday(year,month,day,birthday);}returnfalse;}//校验日期 function verifyBirthday(year,month,day,birthday){var now =newDate();var now_year = now.getFullYear();//年月日是否合理 if(birthday.getFullYear()== year &&(birthday.getMonth()+1)== month && birthday.getDate()== day){//判断年份的范围(3岁到100岁之间) var time = now_year - year;if(time >=3&& time <=100){returntrue;}returnfalse;}returnfalse;}//校验位的检测 function checkParity(card){//15位转18位
 card = changeFivteenToEighteen(card);var len = card.length;if(len ==‘18‘){var arrInt =newArray(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);var arrCh =newArray(‘1‘,‘0‘,‘X‘,‘9‘,‘8‘,‘7‘,‘6‘,‘5‘,‘4‘,‘3‘,‘2‘);var cardTemp =0, i, valnum;for(i =0; i <17; i ++){
     cardTemp += card.substr(i,1)* arrInt[i];}
   valnum = arrCh[cardTemp %11];if(valnum == card.substr(17,1)){returntrue;}returnfalse;}returnfalse;}//15位转18位身份证号 function changeFivteenToEighteen(card){if(card.length ==‘15‘){var arrInt =newArray(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);var arrCh =newArray(‘1‘,‘0‘,‘X‘,‘9‘,‘8‘,‘7‘,‘6‘,‘5‘,‘4‘,‘3‘,‘2‘);var cardTemp =0, i;
   card = card.substr(0,6)+‘19‘+ card.substr(6, card.length -6);for(i =0; i <17; i ++){
     cardTemp += card.substr(i,1)* arrInt[i];}
   card += arrCh[cardTemp %11];return card;}return card;}

使用方法:

<input type="text" class="reg_txt" value="身份证号" titles="请输入您的身份证号!" name="userid" id="username" maxlength="40" onfocus="if(this.value==‘身份证号‘){this.value=‘‘;}" onblur="if(this.value==‘‘){this.value=‘身份证号‘;}nunber(this.value);" style="border: 1px solid red;"><br>
<span class="c_red" id="span_username"></span>

效果为输入身份证号,焦掉移开后自动验证,并返回信息!

以上所述就是本文的全部内容了,希望大家能够喜欢。

时间: 2024-07-30 13:37:32

javascript实现验证身份证号的有效性并提示的相关文章

JavaScript验证身份证号

<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

js验证身份证号

/* * 身份证检测(格式.地区.生日.年龄范围) * code:检测字符串 rangeAge:年龄范围[格式为:25-55] * 返回值 0:为空 ,不为0则验证不通过 */ var cityArr = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "

.net验证身份证号是否符合规则

验证身份证号是否符合规则,比较实用,错判率我自己测试为0,挺好用的,欢迎大神补充. protected bool checkidcard(string idcard) { //验证18位或者17位加大小写x Regex rg = new Regex(@"^\d{17}(\d|X|x)$"); Match mc = rg.Match(idcard); string r = ""; if (!mc.Success) return false; //验证前两位是否符合地区

EXCEL规范数据输入教程-验证身份证号

EXCEL日常工作中经常会输入身份证号码,一不小心就可能出错,今天大飞老师就分享这样一个示例EXCEL规范数据输入教程-验证身份证号. 我们首先要保证在EXCEL中能正确输入身份证号码(PS:身份证号18位,直接输入就会变成科学计数法形式1.235E+17),可以通过两种方式.方式一:单引号+身份证号码如:'123456789111111111,方式二:先改变单元格类型为文本格式,然后再输入身份证号码. 我们要学习一个EXCEL函数LEN,可以返回字符的个数,我们填写一个身份证号码,通过LEN可

Code-Validator:验证身份证号

ylbtech-Code-Validator:验证身份证号 1.返回顶部 1. using System; namespace Sp.Common { public class ValidatorHelper { /// <summary> /// 身份证上数字对应的地址 /// </summary> //enum IDAddress //{ // 北京 = 11, 天津 = 12, 河北 = 13, 山西 = 14, 内蒙古 = 15, 辽宁 = 21, 吉林 = 22, 黑龙江

锋利的js之验证身份证号

我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构  公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码.  2.地址码  表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行.  3.出生日期码  表示编码对象出生的年.月

jquery validation验证身份证号、护照、电话号码、email

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

如何用javascript正则表达式验证身份证号码是否合法

在用户注册页面有些需求要求的比较严格,需要对身份证js验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客.下面就此实现方法给大家讲解下. 很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息: 1.号码的结构  公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码

前端验证身份证号

1 if (s != "") { 2 if (s.length == 18) { 3 var reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}[0-9xX]$/; 4 var result = reg.test(s);// 正则表达式匹配 5 if (!result) { 6 alert("身份证号格式错误,请重新输入"); 7 } 8 } else { 9 alert(&qu