【www.gdgbn.com--php常用代码】





<a href="http://www.gdgbn.com/blist-18-1.html" target="_blank" class="keylink">网页特效</a>身份证号码验证实例代码
<script>
    function isidcardno(num)
    {
        var factorarr = new array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
        var error;
        var vararray = new array();
        var intvalue;
        var lngproduct = 0;
        var intcheckdigit;
        var intstrlen = num.length;
        var idnumber = num;
        // initialize
        if ((intstrlen != 15) && (intstrlen != 18))
        {
            return false;
        }
        // check and set value
        for(i=0;i         {
            vararray[i] = idnumber.charat(i);
            if ((vararray[i] < "0" || vararray[i] > "9") && (i != 17))
            {
                return false;
            }
            else if (i < 17)
            {
                vararray[i] = vararray[i]*factorarr[i];
            }
        }
       
        if (intstrlen == 18)
        {
            //check date
            var date8 = idnumber.substring(6,14);
            if (checkdate(date8) == false)
            {
                //error = "身份证中日期信息不正确!.";
                return false;
            }
            // calculate the sum of the products
            for(i=0;i<17;i++)
            {
                lngproduct = lngproduct + vararray[i];
            }
            // calculate the check digit
            intcheckdigit = 12 - lngproduct % 11;
            switch (intcheckdigit)
            {
                case 10:
                intcheckdigit = "x";
                break;
                case 11:
                intcheckdigit = 0;
                break;
                case 12:
                intcheckdigit = 1;
                break;
            }
            // check last digit
            if (vararray[17].touppercase() != intcheckdigit)
            {
                return false;
            }
       }
       else
        {   //length is 15
            //check date
            var date6 = idnumber.substring(6,12);
            if (checkdate(date6) == false)
            {
                //alert("身份证日期信息有误!.");
                return false;
            }
        }
        return true;
    }
   
    function checkdate(date)
    {
        return true;
    }

    function test()
    {
        var id = document.getelementbyid("id").value;
        alert(id);
        alert(isidcardno(id));
    }
</script>



            *身 份 证:
           
           
         


身份证号码的规则】
1、15位身份证号码组成:
ddddddyymmddxxs共15位,其中:
dddddd为6位的地方代码,根据这6位可以获得该身份证号所在地。
yy为2位的年份代码,是身份证持有人的出身年份。
mm为2位的月份代码,是身份证持有人的出身月份。
dd为2位的日期代码,是身份证持有人的出身日。
这6位在一起组成了身份证持有人的出生日期。
xx为2位的顺序码,这个是随机数。
s为1位的性别代码,奇数代表男性,偶数代表女性。
 
2、18位身份证号码组成:
ddddddyyyymmddxxsp共18位,其中:
其他部分都和15位的相同。年份代码由原来的2位升级到4位。最后一位为校验位。
校验规则是:
(1)十七位数字本体码加权求和公式
s = sum(ai * wi), i = 0, ... , 16 ,先对前17位数字的权求和
ai:表示第i位置上的身份证号码数字值
wi:表示第i位置上的加权因子
wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)计算模
y = mod(s, 11)
(3)通过模得到对应的校验码
y: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 x 9 8 7 6 5 4 3 2

本文来源:http://www.gdgbn.com/jiaocheng/28416/