嚴格驗證身份證號碼的js代碼,js根據身份證號判斷性別

本文目錄一覽:

請給一個驗證身份證有效性的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 = /^\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/;

var v18 = /^\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d[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

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/278374.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-19 13:21
下一篇 2024-12-19 13:21

相關推薦

發表回復

登錄後才能評論