`
xining
  • 浏览: 39757 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JS验证身份证号码

阅读更多
【身份证号码的规则】
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

也就是说,如果得到余数为1则最后的校验位p应该为对应的0.如果校验位不是,则该身份证号码不正确。以下为js版本的校验实例。



Js代码
<script language="javascript">   
    <!--   
    var powers=new Array("7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2");   
    var parityBit=new Array("1","0","X","9","8","7","6","5","4","3","2");   
    var sex="male";   
    //校验身份证号码的主调用   
  
    function validId(obj){   
        var _id=obj.value;   
        if(_id=="")return;   
        var _valid=false;   
        if(_id.length==15){   
            _valid=validId15(_id);   
        }else if(_id.length==18){   
            _valid=validId18(_id);   
        }   
        if(!_valid){   
            alert("身份证号码有误,请检查!");   
            obj.focus();   
            return;   
        }   
        //设置性别   
  
        var sexSel=document.getElementById("sex");   
        var options=sexSel.options;   
        for(var i=0;i<options.length;i++){   
            if(options[i].value==sex){   
                options[i].selected=true;   
                break;   
            }   
        }   
    }       
    //校验18位的身份证号码   
  
    function validId18(_id){   
        _id=_id+"";   
        var _num=_id.substr(0,17);   
        var _parityBit=_id.substr(17);   
        var _power=0;   
        for(var i=0;i< 17;i++){   
            //校验每一位的合法性   
  
            if(_num.charAt(i)<'0'||_num.charAt(i)>'9'){   
                return false;   
                break;   
            }else{   
                //加权   
  
                _power+=parseInt(_num.charAt(i))*parseInt(powers[i]);   
                //设置性别   
  
                if(i==16&&parseInt(_num.charAt(i))%2==0){   
                    sex="female";   
                }else{   
                    sex="male";   
                }   
            }   
        }   
        //取模   
  
        var mod=parseInt(_power)%11;   
        if(parityBit[mod]==_parityBit){   
            return true;   
        }   
        return false;   
    }   
    //校验15位的身份证号码   
  
    function validId15(_id){   
        _id=_id+"";   
        for(var i=0;i<_id.length;i++){   
            //校验每一位的合法性   
  
            if(_id.charAt(i)<'0'||_id.charAt(i)>'9'){   
                return false;   
                break;   
            }   
        }   
        var year=_id.substr(6,2);   
        var month=_id.substr(8,2);   
        var day=_id.substr(10,2);   
        var sexBit=_id.substr(14);   
        //校验年份位   
  
        if(year<'01'||year >'90')return false;   
        //校验月份   
  
        if(month<'01'||month >'12')return false;   
        //校验日   
  
        if(day<'01'||day >'31')return false;   
        //设置性别   
  
        if(sexBit%2==0){   
            sex="female";   
        }else{   
            sex="male";   
        }   
        return true;   
    }   
    //-->   
  
</script>   
<input type="text" onblur="validId(this)" maxlength=18 size=18>   
<select id="sex">   
    <option value="male">男</option>   
    <option value="female">女</option>  

分享到:
评论
1 楼 niuqiang2008 2012-04-16  

相关推荐

    js验证身份证号码的有效方法

    ### JS验证身份证号码的有效方法 身份证号码验证是前端开发中常见的功能之一,特别是在涉及用户注册、个人信息填写等场景时尤为重要。下面将详细介绍如何利用JavaScript来验证身份证号码的有效性。 #### 身份证...

    JS验证身份证号码合法性.txt

    JS验证身份证号码合法性

    Js验证身份证号码 Demo例子里有完整的Js代码

    身份证号码验证; Demo例子里有完整的Js代码; 末位为X或x都能验证; 老身份证号码15位的也可以验证是否正确; 完整验证新老身份证号码的正确性

    验证身份证号码有效性的js

    要使用JavaScript验证身份证号码,我们首先需要定义一个函数,例如`isValidIDCard`,接收一个身份证号码作为参数。这个函数的核心就是校验码的计算过程。以下是一个简单的实现: ```javascript function ...

    javascript身份证号码验证-支持15位和18位带x身份证

    验证身份证号码的完整JavaScript函数可能如下所示: ```javascript function isIdCard(id) { var regex = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\d{3}[\dXx]$/; if (!regex.test...

    js身份证号码获取性别、出生日期、籍贯省市.zip

    4. **校验码**(第18位):基于前17位数字通过特定算法计算得出,用于验证身份证号码的合法性。 要从身份证号码中获取性别,我们只需要查看第17位数字。如果它是奇数,那么这个人是男性;如果是偶数,那么这个人是...

    js身份证号码验证

    js身份证号码验证 详细全面的身份证号码验证

    js验证身份证格式

    在JavaScript中,验证身份证号码通常涉及以下步骤: 1. **长度检查**:检查输入的身份证号码长度,必须是15位或18位。 2. **字符类型检查**:身份证号码只包含数字,因此需要确保输入的字符串仅包含0-9的数字。 3. ...

    JS验证身份证及获取地区功能示例

    首先,身份证验证是确保用户输入的身份证号码合法的关键步骤。身份证号码由18位数字组成,前6位代表行政区划代码,接下来的7位是出生日期,接着的3位是顺序码,最后一位是校验码。JS中可以使用正则表达式进行验证: ...

    18位身份证号码验证代码

    18位身份证号码验证代码,js验证 ,javascript验证18位身份证代码,js验证身份证号码。

    身份证号码验证程序 javascript验证的html文件

    在这个例子中,JavaScript代码负责处理用户的输入,进行身份证号码的有效性验证。 3. **身份证号码验证规则**:中国的身份证号码由18位数字组成,包括地区码、出生日期码、顺序码和校验码。验证时需检查: - 地区...

    正则表达式 JS 身份证验证

    2. **精确模式**:更加细致地验证身份证号码的格式,包括检查出生日期的合理性等。 ```javascript /^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X)?$/ ``` 该正则表达式能够更准确地验证18位身份证...

    javaScript 验证身份证号是否正确,并能获取户口所在地。

    javaScript实现验证身份证是否正确,并能获取户口所在地。 调用方式: 引入idCard.js var msg = idCard.checkIdCard(身份证号); msg为 "正确" 时验证正确,否则返回错误信息 身份证正确时调用 var address = ...

    javascript 身份证号码格式验证

    运用javascript进行身份证号码格式验证。

    根据身份证号码获取性别、出生日期、籍贯省市的js示例

    6. **JavaScript实现**:在JS文件中编写函数,监听身份证号码输入框的`oninput`事件。当输入发生改变时,调用该函数,根据上述逻辑解析身份证号码并更新相应的显示区域。 7. **事件处理**:在JavaScript中,可以...

    最全身份证号码验证JS

    最全身份证号码验证JS包含以下内方面内容: 1、验证身份证的长度及格式 2、验证身份证地区是否正确 3、验证身份证上的出生日期是否正确 4、验证身份证号最后一位是否正确 5、根据身份证号验证性别 以上内容希望对有...

    身份证号码号码验证JS

    身份证号码号码验证JS。可以非常严格的对所输入的号码进行验证,特别是有‘X’的,以及二代身份证。

    用JavaScript验证身份证号

    * 身份证15位编码规则:dddddd yymmdd xx p * dddddd:地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,无法确定 ... * i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置

Global site tag (gtag.js) - Google Analytics