本文为大家分享一个身份证号超精确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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。