身份证号码验证正则表达式及用法(包括:位数、规则等)

//sfz.js页面function CheckIDCard(StrNumber)
{
//判断身份证号码格式函数
//公民身份号码是特征组合码,
//排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码

//身份证号码长度判断
if(StrNumber.length<15||StrNumber.length==16||StrNumber.length==17||StrNumber.length>18)
{
return {"code":201,"errormsg":"填写的身份证号码长度不正确,请重新填写!"};
}
//身份证号码最后一位可能是超过100岁老年人的X.X也可以代表是阿拉伯数字10的意思
//所以排除掉最后一位数字进行数字格式测试,最后一位数字有最后一位数字的算法

var Ai;
if(StrNumber.length==18)
{
Ai = StrNumber.substring(0,17);
}
else
{
Ai =StrNumber.substring(0,6)+"19"+StrNumber.substring(6,9);
}
//调用数字判断函数IsNumeric()
if(IsNumeric(Ai)==false)
{
return {"code":201,"errormsg":"身份证号码数字字符串不正确,请重新填写!"};
}

var strYear,strMonth,strDay,strBirthDay;
strYear = parseInt(Ai.substr(6,4));
strMonth = parseInt(Ai.substr(10,2)) ;
strDay = parseInt(Ai.substr(12,2));
//调用日期判断函数IsValidDate()
if (IsValidDate(strYear,strMonth,strDay)==false)
{
return {"code":201,"errormsg":"身份证号码验证失败!"};
}

var arrVerifyCode = new Array("1","0","x","9","8","7","6","5","4","3","2");
var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
var k,TotalmulAiWi=0;
for (k=0; k<17;k++)
 {
 TotalmulAiWi = TotalmulAiWi + parseInt(Ai.substr(k,1)) * Wi[k];

  }
//alert("身份证号码最后一位的识别码是:"+TotalmulAiWi);
var modValue =TotalmulAiWi % 11 ;
var strVerifyCode = arrVerifyCode[modValue];
Ai = Ai+strVerifyCode;
//alert("身份证号码"+StrNumber+"与正确的号码"+Ai+"一致!");
if((StrNumber.length==18)&&(StrNumber!=Ai))
{
return {"code":201,"errormsg":"身份证号码验证失败!"};
}
return {"code":200,"msg":"OK"};

}
//数字判断函数IsNumeric()//数字判断函数IsNumeric()
function IsNumeric(oNum)
{
  return /^\d+$/.test(oNum)
}
 function IsValidDate(iY, iM, iD) {
   if (iY>2200 || iY<1900 || !IsNumeric(iY)){
            return false;
        }
   if (iM>12 || iM<=0 || !IsNumeric(iM)){
            return false;
        }
   if (iD>31 || iD<=0 || !IsNumeric(iD)){
            return false;
        }
  return true;
  }  

用法:

<!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-Type" content="text/html; charset=utf-8" />
<!--引用身份证验证的正则表达式-->
<script type="text/javascript" src="../js/sfz.js"></script>
<title>无标题文档</title>
</head>

<body>
<input style="width:240px; margin-left:21px;" id="num" onblur="num0()" class="inp fl" type="text" />
<div class="fl"   id="num-a"></div>
</body>
</html>
<script type="text/javascript">
function num0()
 {    

  var mail = document.getElementById("num").value;
    var ckresult=CheckIDCard(mail);

    if(ckresult.code!=200)
     {
          changdu  = "<img style=‘margin-left:15px; margin-top:10px; float:left‘ src=‘../images/叉号.png‘ /><span style=‘color:#FF0004; font-size:14px; margin-top:10px; float:left; margin-left:10px;‘>"+ckresult.errormsg+"</span>";
            $("#num-a").html(changdu );
            document.getElementsByClassName("btn")[0].disabled=true;
     }
     else
     {
         changdu  = "<img style=‘margin-left:15px; margin-top:10px; float:left‘ src=‘../images/对号.png‘ /><span style=‘color:#FF0004; font-size:14px; margin-top:10px; float:left; margin-left:10px;‘></span>";
            $("#num-a").html(changdu );
     }
}
</script>
时间: 2024-10-05 10:41:24

身份证号码验证正则表达式及用法(包括:位数、规则等)的相关文章

15/18位身份证号码验证的正则表达式总结(详细版)

前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM dd 375 0     十八位 xxxxxx    yy MM dd   75 0     十五位 地区: [1-9]\d{5} 年的前两位: (18|19|([23]\d))            1800-2399 年的后两位: \d{2} 月份: ((0[1-9])|(10|11|12)) 天

身份证号码的正则表达式及验证详解(JavaScript,Regex)

简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案.本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案. 身份证号码说明 居民身份证号码,正确.正式的称谓应该是"公民身份号码".根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 以北京市朝阳区一女性身份证号码为

js正则实现二代身份证号码验证详解

js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 地址码表示编码对象常住户口所在县(市.旗.区)的行政区划代码. 出生日期码表示编码对象出生的年.月.日,其中年份用四位数字表示,年.月.日之间不用分隔符. 顺序码表示同一地址码所标识的区域范围内,对同年.月.日出生的人员

身份证号码验证

<head> <title>身份证号码验证</title> <meta charset="utf-8"/> <script type="text/javascript"> var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", 21:"辽宁&quo

身份证号码的正则表达式

<!DOCTYPE HTML><html><head> <meta charset="utf-8"> <title>身份证号码的正则表达式及验证详解(JavaScript,Regex)</title></head><body><div id="main"></div><script> console.log = function(val

C#实现身份证号码验证的方法

本文实例讲述了C#实现身份证号码验证的方法.分享给大家供大家参考.具体实现方法如下: 随着现在互联网的发展,越来越多的注册用户的地方都用到了身份证,那么对于输入的身份证如何验证呢?看下面的代码,其实很简单. 主要注意的是,目前的身份证分为16和18位,然后分别验证校验位,省份,生日即可. 主要类如下: /// <summary> /// 验证身份证号码类 /// </summary> public class IDCardValidation { /// <summary&g

javascript身份证号码验证

https://github.com/oxcow/id-number-validator 版权声明: 关于<javascript身份证号码验证>的一切权利归作者@Leeyee所有: 非商用.非衍生; 如需转载需要注明来源于http://iyiguo.net/blog/2013/07/31/javascript-idcard-validate/ 15位身份证号码编码规则 18位身份证号码编码规则 校验规则 javascript编码实现 源代码 验证示例 15位身份证号码编码规则 ddddddyy

编程乐趣:身份证号码验证的方法

随着如今互联网的发展,越来越多的注冊用户的地方都用到了身份证.那么对于输入的身份证怎样验证呢?看以下的代码,事实上非常easy.主要注意的是,眼下的身份证分为16和18位,然后分别验证校验位.省份,生日就可以.主要类: /// <summary> /// 验证身份证号码类 /// </summary> public class IDCardValidation { /// <summary> /// 验证身份证合理性 /// </summary> /// &

身份证号码验证及其相关!

2015-11-16 16:35:32 小写转大写:toUpper(); 大写转小写:toLower(); 替换:Replace('X','Y'); 将字符串转换为字符数组:toCharArray(); 从X处取出Y个字符:string.Substring(ing x,int y); 在X处插入Y:string.Insert(int X,string Y); 用x分割:string.Split('x'); 验证18位身份证号(包含小写x): 1 /// <summary> 2 /// 18位身