首页 > 编程知识 正文

严格验证身份证号码的js代码,js根据身份证号判断性别

时间:2024-04-24 11:43:03 阅读:333635 作者:OWBM

本文目录一览:

请给一个验证身份证有效性的js代码

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"

HTML

HEAD

TITLE New Document /TITLE

META NAME="Generator" CONTENT="EditPlus"

META NAME="Author" CONTENT=""

META NAME="Keywords" CONTENT=""

META NAME="Description" CONTENT=""

/HEAD

SCRIPT LANGUAGE="JavaScript"

!--

function a( e ){

var v15 = /^ddddddddddddddd$/;

var v18 = /^ddddddddddddddddd[1-9x]$/

if( e.value.length == 15 ){

if( !e.value.match(v15) ){

alert("15位身份证号码应为数字");

}

}else if( e.value.length == 18 ){

if( !e.value.match(v18) ){

alert("18位身份证号码应为数字,最后一位可为x");

}

}else{

alert("身份证号码应为15或18位");

}

}

//--

/SCRIPT

BODY

INPUT TYPE="text" NAME="" onblur="a(this)"

/form

/BODY

/HTML

如果你的重点是验证身份证号码是否正确,你可以到网上找个接口,把号码传过去,整个信息都给你查出来了,何必这么麻烦,你又不是公安局的

我要一段验证身份证的js加上表单的写法

验证身份证的核心函数

function IDCardRegex(v) {

    v = SpaceClear(v);

    if (v.length != 18) {

        //alert("长度不正确");

        return false;

    }

    var numrex = /[0-9xX]/g;

    if (v.replace(numrex, '') != '') {

        //alert("字符不正确");

        return false;

    }

    var address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";

    var left2=v.substr(0,2);

    if (address.indexOf(left2)  0) {

        //alert("地区信息不正确");

        return false;

    }

    var birth = v.substr(6, 8);

    birth = birth.substr(0, 4) + "-" + birth.substr(4, 2) + "-" + birth.substr(6);

    var birthday = new Date(birth);

    if (birthday.getDate().toString() == 'NaN') {

        //alert("生日不正确");

        return false;

    }

    //效验码

    var Wistr = "7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2";

    var Wis = Wistr.split(',');

    var Sums = 0;

    var Sum = 0;

    var c;

    for (var i = 0; i  17; i++) {

        c = v.substr(i, 1);

        Sum = parseInt(c) * parseInt(Wis[i]);

        Sums += Sum;

    }

    var Y = Sums % 11;

    var T = v.substr(17, 1);

    if (T == 'X') {

        T = 'x';

    }

    var E = '';

    switch (Y) {

        case 0:

            Y = 1;

            break;

        case 1:

            Y = 0;

            break;

        default:

            Y = 12 - Y;

            break;

    }

    E = Y.toString();

    if (Y == 10) {

        E = 'x';

    }

    if (E != T) {

//        alert("效验码不正确");

        return false;

    }

//    alert("检查完毕");

    return true;

}

调用函数:

var idcardno='*****';

if(!IDCardRegex(idcardno))

{

//alert("身份证号码格式不正确");

}

会返回true或false

页面结合代码示例如下:

input type="text" id="text_idcard" /span id="span_idcard"/span

input type="button" id="btn_ok" value="确定" /

js代码如下 引用jquery

$(function(){

    $("#text_idcard").blur(function(){//当输完身份证号码 将鼠标点击其他地方时候触发事件

        var idcard=$("#text_idcard").val();

        idcard=idcard.replace(/s+/g,"");

        if(IDCardRegex(idcard))

        {

            $("#span_idcard").text("身份证格式正确");

            //验证通过 提示可有可无

        }

        else

        {

            //验证未通过 

            $("#span_idcard").text("身份证格式不正确");

            $("#text_idcard").focus();//让焦点重新回到身份证输入框

            

        }

    })

    $("#btn_ok").click(function(){//按钮提交事件 这个可以写在下面一个函数里

        var idcard=$("#text_idcard").val();

        idcard=idcard.replace(/s+/g,"");

        if(!IDCardRegex(idcard))

        {

            //验证未通过 

            $("#span_idcard").text("身份证格式不正确");

            $("#text_idcard").focus();//让焦点重新回到身份证输入框

            return false;//阻止按钮向下执行 

        }

        

    })

})

function btn_send()

{

    //----把按钮执行事件写在这里 然后按钮属性加上onclick="return btn_send()"

}

上面是手写代码 看LZ对js不太熟悉代码就啰嗦了很多

如何用javascript正则表达式验证身份证号

很简单

function CheckCardNo(card) 

  // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X 

  var reg = /(^d{15}$)|(^d{18}$)|(^d{17}(d|X|x)$)/; 

  if(reg.test(card) === false) 

  { 

    alert("身份证输入不合法"); 

    return false; 

  } 

}

CheckCardNo('123456778');

js判断身份证号码是否合法有效全国通用

如果要做到全国通用。估计有点问题。毕竟身份证是与个人的信息相互对应的。除非走专业的通道去校验!!如果只是简单判断身份证是否合法有效,可以参考一下身份证号码的构造结构。

首先看看身份证是怎么构造的:

首先:

1)地区代码:表示出生地,上图为北京市朝阳区

2)出生日期:不解释,只要合理就好

3)顺序号:最后一位为奇数表示性别男,偶数性别女

4)校验位:这是系统验证比较关键的一位,由前面17位通过公式计算得出,具体公式在此不做讨论,因为其结果为数字0~9或者字母X

这些条件都知道了。

就可以开始了:

//首先最迟判断身份证号码的位数(18)

var CardNumber="";//待验证的身份证号码

var iscard=/^d{17}([0-9]|X)$/;

if(iscard.text(CardNumber)){

  //验证身份证的"地区代码(前6位数字,这里需要搜集各个地区的代码...)"

  if(这里校验地区代码){

     if(这里校验出生日期){

       //校验出生日期时,会牵扯到日历算法(计算某年的某月有多少天,防止用户随意输入大于31的日期)

       //如果判断到这里了,就可以初步确定为"合法有效"的身份证号码了。

       //因为“校验位”相对而言较复杂。如果楼主有意思。可以百度找资料。

     }

  }

}

js身份证验证怎么做

!DOCTYPE html

html

head

meta http-equiv="content-type" content="text/html;charset=gbk" /

/head

body

script type="text/javascript" 

//--身份证号码验证-支持新的带x身份证 

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)) { 

        //error = "输入身份证号码长度不对!"; 

        //alert(error); 

        //frmAddUser.txtIDCard.focus(); 

        return false; 

    }     

    // check and set value 

    for(i=0;iintStrLen;i++) { 

        varArray[i] = idNumber.charAt(i); 

        if ((varArray[i]  '0' || varArray[i]  '9')  (i != 17)) { 

            //error = "错误的身份证号码!."; 

            //alert(error); 

            //frmAddUser.txtIDCard.focus(); 

            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 = "身份证中日期信息不正确!."; 

            //alert(error); 

            return false; 

        }         

        // calculate the sum of the products 

        for(i=0;i17;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) { 

            //error = "身份证效验位错误!...正确为: " + intCheckDigit + "."; 

            //alert(error); 

            return false; 

        } 

    }  

    else{        //length is 15 

        //check date 

        var date6 = idNumber.substring(6,12); 

        if (checkDate(date6) == false) { 

            //alert("身份证日期信息有误!."); 

            return false; 

        } 

    } 

    //alert ("Correct."); 

    return true; 

}

function checkDate(date) 

    return true; 

}  

function check()

{

 idnum = document.getElementById('idcard').value;

 alert(isIdCardNo(idnum));

 

}

/script

form id="form1" name="form1" method="post" action=""

  table align="center" width="60%" border="0"

    tr

      td /td

      td /td

      td /td

    /tr

    tr

      td /td

      td /td

      td /td

    /tr

    tr

      td width="40%" valign="top"div align="right"用户注册/div/td

      td width="11%" valign="top" /td

      td width="49%" valign="top"a href="#"管理员登录/a/td

    /tr

    tr

      td /td

      td /td

      td /td

    /tr

    tr

      td colspan="3"table width="100%" border="0"

        tr

          td valign="top" /td

          td valign="top" /td

        /tr

        tr

          td valign="top"div align="right"姓    名:/div/td

          td valign="top"label

            input type="text" name="textfield" /

          /label/td

        /tr

        tr 

          td width="421" valign="top" /td

          td width="561" valign="top" /td

        /tr

        tr

          td valign="top"div align="right"证件号码:

            /div/td

          td valign="top"input type="text" name="idcard" id="idcard"/

            label

            input type="submit" name="Submit3" value="验证" onClick="check()"/

            /label/td

        /tr

        tr

          td valign="top" /td

          td valign="top" /td

        /tr

        tr

          td valign="top"div align="right"电话号码:/div/td

          td valign="top"input type="text" name="textfield22" //td

        /tr

        tr

          td valign="top" /td

          td valign="top" /td

        /tr

        tr

          td valign="top" /td

          td valign="top" /td

        /tr

        tr

          td valign="top"

            div align="right"

              input type="submit" name="Submit" value="提交" /

              /div/td

          td valign="top"label

              input type="reset" name="Submit2" value="重置" /

              /label/td

        /tr

      /table/td

    /tr

  /table

/form 

/body

/html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。