现在的位置: 首页 > 综合 > 正文

身份证号码验证代码集合(js)

2012年11月04日 ⁄ 综合 ⁄ 共 4514字 ⁄ 字号 评论关闭
近日在写一个系统,找到些身份证验证代码,先放在这里,备忘!
//以下代码是我在论坛里面问问题的一部分,后来问题没有最终解决,我更改成另外一种方法了。
function isChinaIDCard(StrNo)
{
    StrNo 
= JHshLTrim(StrNo);
    StrNo 
= JHshRTrim(StrNo);
    StrNo 
= StrNo.toString();
//    alert(StrNo.length)
    if (StrNo.length == 18)
    
{
        
var a, b, c;
        
if (!isInteger(StrNo.substr(017)))
        
{
            document.myform.CardNo.focus();
            
return false;
        }

        a 
= parseInt(StrNo.substr(01)) * 7+parseInt(StrNo.substr(11)) * 9 +parseInt(StrNo.substr(21)) * 10;
        a 
= a + parseInt(StrNo.substr(31)) * 5+parseInt(StrNo.substr(41)) * 8+parseInt(StrNo.substr(51)) * 4;
        a 
= a + parseInt(StrNo.substr(61)) * 2+parseInt(StrNo.substr(71)) * 1+parseInt(StrNo.substr(81)) * 6;
        a 
= a + parseInt(StrNo.substr(91)) * 3+parseInt(StrNo.substr(101)) * 7+parseInt(StrNo.substr(111)) * 9;
        a 
= a + parseInt(StrNo.substr(121)) * 10+parseInt(StrNo.substr(131)) * 5+parseInt(StrNo.substr(141)) * 8;
        a 
= a + parseInt(StrNo.substr(151)) * 4+parseInt(StrNo.substr(161)) * 2;
        b 
= a % 11;

        
if (b == 2)
        
//最后一位为校验位  
        {
            c 
= StrNo.substr(171).toUpperCase(); //转为大写X  
        }

        
else
        
{
            c 
= parseInt(StrNo.substr(171));
        }


        
switch (b)
        
{
            
case 0:
                
if (c != 1)
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:1");
                            document.myform.CardNo.focus();
                    
return false;
                }

                
break;
            
case 1:
                
if (c != 0)
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:0");
                            document.myform.CardNo.focus();
                    
return false;
                }

                
break;
            
case 2:
                
if (c != "X")
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:X");
                            document.myform.CardNo.focus();
                    
return false;
                }

                
break;
            
case 3:
                
if (c != 9)
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:9");
                            document.myform.CardNo.focus();
                    
return false;
                }

                
break;
            
case 4:
                
if (c != 8)
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:8");
                            document.myform.CardNo.focus();
                    
return false;
                }

                
break;
            
case 5:
                
if (c != 7)
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:7");
                            document.myform.CardNo.focus();
                    
return false;
                }

                
break;
            
case 6:
                
if (c != 6)
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:6");
                            document.myform.CardNo.focus();
                    
return false;
                }

                
break;
            
case 7:
                
if (c != 5)
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:5");
                            document.myform.CardNo.focus();
                    
return false;
                }

                
break;
            
case 8:
                
if (c != 4)
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:4");
                            document.myform.CardNo.focus();
                    
return false;
                }

                
break;
            
case 9:
                
if (c != 3)
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:3");
                            document.myform.CardNo.focus();
                    
return false;
                }

                
break;
            
case 10:
                
if (c != 2)
                
{
                    alert(
"身份证好号码校验位错:最后一位应该为:2");
                            document.myform.CardNo.focus();
                    
return false
                }

        }

    }

    
else if(StrNo.length==15)
    
//15位身份证号  
    {
        
if (!isInteger(StrNo))
        
{
            alert(
"身份证号码错误,前15位不能含有英文字母!");
                    document.myform.CardNo.focus();
            
return false;
        }

    }

    
else
    
{
        alert(
"输入的身份证号码必须为15位或者18位!");
        document.myform.CardNo.focus();
        
return false;
        }


    
switch (StrNo.length)
    
{
        
case 15:
            
if (isValidDate("19" + StrNo.substr(62), StrNo.substr(82),StrNo.substr(

抱歉!评论已关闭.