,,超精准的javascript验证身份证号的方法

,,超精准的javascript验证身份证号的方法

本文为大家分享一个身份证号超精确javascript验证的具体实现方法,根据身份证号判断其性别。感兴趣的朋友可以参考一下。

在写程序之前,我们先了解一下ID号的构成:

身份证号码有两种,旧的是15位,新的是18位。

身份证15位编码规则:dddddd yymmdd xx p

Dddddd:区号yymmdd:出生日期xx:序列类代码,P:性别无法确定,奇数为男性,偶数为女性;

身份证18位编码规则:dddddd yyyymmdd xxx y

Dddddd:区号yyyymmdd:出生日期xxx:序列类代码,无法确定。奇数为男性,偶数为女性Y:校验码。这个数字的值可以通过前17位来计算。计算公式见程序,一些需要用到的常数:

18位数字的加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ],验证位为 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ],校验位计算公式为Y_P = mod( (AiWi),11 )

我是2.身份证号从右到左18位数字;Y_P是脚校验码所在的校验码数组的位置。

var Wi=[ 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];//加权因子

var ValideCode=[ 1,0,10,9,8,7,6,5,4,3,2];//身份证验证位值. 10代表x。

函数IdCardValidate(idCard) {

idCard=trim(idCard.replace(//g,' ');//删除字符串开头和结尾的空格

if (idCard.length==15) {

返回isvaliditybrithby 15 id card(id card);//验证15位身份证

} else if (idCard.length==18) {

var a _ id card=id card . split(');//获取身份证数组

If (isValidityBrithby18ID卡(身份证)IsrueValidaTecodeby 18ID卡(A _ ID卡)){//18位身份证基本验证和18位验证

返回true

}否则{

返回false

}

}否则{

返回false

}

}

/**

*当身份证号为18位时,判断最后一个验证位是否正确。

* @param a_idCard身份证号码数组

* @返回

*/

函数istruevalidatecodeby 18 id card(a _ id card){

var sum=0;//声明加权和变量

if (a_idCard[17].toLowerCase()=='x') {

a _ id card[17]=10;//将验证码最后一位数字X替换为10,方便后续操作。

}

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

sum=Wi[I]* a _ id card[I];//加权和

}

valCodePosition=sum % 11//获取验证码的位置。

if(a _ id card[17]==valid ecode[valCodePosition]){

返回true

}否则{

返回false

}

}

/**

*验证18位身份证号码中的生日是有效的生日。

* @param idCard 18位图书ID字符串

* @返回

*/

函数isvaliditybrithby 18 id card(id card 18){

var year=idCard18.substring(6,10);

var month=idCard18.substring(10,12);

var day=idCard18.substring(12,14);

var temp_date=new Date(年,parseFloat(月)-1,parseFloat(日));

//这里用getFullYear()获取年份,避免Y2K问题。

if(temp_date.getFullYear()!=parseFloat(年)

||temp_date.getMonth()!=parseFloat(月)-1

||temp_date.getDate()!=parseFloat(天)){

返回false

}否则{

返回true

}

}

/**

*验证15位身份证号码中的生日是有效的生日。

* @param idCard15 15位图书ID字符串

* @返回

*/

函数isvaliditybrithby 15 id card(id card 15){

var year=idCard15.substring(6,8);

var month=idCard15.substring(8,10);

var day=idCard15.substring(10,12);

var temp_date=new Date(年,parseFloat(月)-1,parseFloat(日));

//对于你在旧身份证中的年龄,使用getYear()方法,而不是考虑Y2K问题。

if(temp_date.getYear()!=parseFloat(年)

||temp_date.getMonth()!=parseFloat(月)-1

||temp_date.getDate()!=parseFloat(天)){

返回false

}否则{

返回true

}

}

//删除字符串开头和结尾的空格

函数修剪(字符串){

返回str.replace(/(^\s*)|(\s*$)/g,“);

}

根据身份证号对其进行性别的判定

/**

*通过身份证判断是男是女

* @param idCard 15/18位身份证号码

* @return '女性'-女性,'男性'-男性

*/

函数maleorfemalbydcard(id card){

idCard=trim(idCard.replace(//g,' ');//处理身份证号。包括字符之间的空格。

if(idCard.length==15){

if(idCard.substring(14,15)%2==0){

返回"女性";

}否则{

返回'男性;

}

}else if(idCard.length==18){

if(idCard.substring(14,17)%2==0){

返回"女性";

}否则{

返回'男性;

}

}否则{

返回空

}

}

以上就是Java语言(一种计算机语言,尤用于创建网站)描述语言验证身份证号的具体实现方法,并且根据身份证能验证性别,是不是很神奇,欢迎大家学习借鉴。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: