
原始链接:
这实际上并不困难. 在Internet上找到更多信息将永远为您带来意想不到的收益. 但是,如果您想做好,就必须先磨锐武器. 我们需要了解ID号码的规则,并且彼此了解.
ID号的长度为15位和18位. 当它是15位数字时,它是一个数字,但是当它是18位数字时,它可能具有校验数字(X),因此不足以验证该数字.
此外,ID号可以告诉一个人的年龄,出生位置(ID卡在哪里?)等. 这些都是对我们有用的数据.
/ *
作者: yufulong
博客:
* /
var vcity = {11: “北京”,12: “天津”,13: “河北”,14: “山西”,15: “内蒙古”,
21: “辽宁”,22: “吉林”,23: “黑龙江”,31: “上海”,32: “江苏”,
33: “浙江”,34: “安徽”,35: “福建”,36: “江西”,37: “山东”,41: “河南”,
42: “湖北”,43: “湖南”,44: “广东”,45: “广西”,46: “海南”,50: “重庆”,
51: “四川”,52: “贵州”,53: “云南”,54: “西藏”,61: “陕西”,62: “甘肃”,
63: “青海”,64: “宁夏”,65: “新疆”,71: “台湾”,81: “香港”,82: “澳门”,91: “海外”
};
checkCard =函数()
{
var card = document.getElementById('card_no'). 值;
//它是空的吗?
如果(卡===``)
{
提示(“请输入ID号,ID号不能为空”);
document.getElementById('card_no'). 焦点;
返回假;
}
//检查长度,键入
如果(isCardNo(卡)===否)
{
提示(“您输入的ID号不正确,请重新输入”);
document.getElementById('card_no'). 焦点;
返回假;
}
//检查省份

如果(checkProvince(卡)===否)
{
提示(“您输入的ID号不正确,请重新输入”);
document.getElementById('card_no'). 焦点;
返回假;
}
//检查生日
如果(checkBirthday(card)===否)
{
提醒(“您输入的ID号码的生日不正确,请重新输入”);
document.getElementById('card_no'). focus();
返回假;
}
//检测位
如果(checkParity(card)===否)
{
提示(“您的ID校验码不正确,请重新输入”);
document.getElementById('card_no'). focus();
返回假;
}
警报(“确定”);
返回true;
};
//检查数字是否符合规格,包括长度和类型
isCardNo =函数(卡)
{
//号码是15位或18位,当15位是全数字时,18位的前17位是数字,最后一位是校验位,可以是数字或字符X <
var reg = /(^ \ d {15} $)| (^ \ d {17}(\ d | X)$)/;
如果(reg.test(card)=== false)
{
警报(“演示”);
返回假;
}
返回true;
};
//取的前两位数字并验证省份
checkProvince =函数(卡)
{
var province = card.substr(0,2);
如果(vcity [省] ==未定义)
{
返回假;
}
返回true;
};
//检查生日是否正确
checkBirthday =函数(卡)
{
var len = card.length;
//当ID卡为15位数字时,顺序为省(3位数字),城市(3位数字),年(2位数字),月(2位数字),日(2位数字),校验位(3位)数字),都是数字<
如果(len =='15')
{
var re_fifteen = / ^(\ d {6})(\ d {2})(\ d {2})(\ d {2})(\ d {3})$ /;
var arr_data = card.match(re_fifteen);
var year = arr_data [2];
var month = arr_data [3];
var day = arr_data [4];
可变生日=新日期(“ 19” +年+“ /” +月+“ /” +天);
返回verifyBirthday('19'+年,月,日,生日);
}
//当ID卡为18位数字时,顺序为省(3位数字),城市(3位数字),年(4位数字),月(2位数字),日(2位数字),校验位(4位)位数)和校验位的末尾. 可能是X
如果(len =='18')
{
var re_eighteen = / ^(\ d {6})(\ d {4})(\ d {2})(\ d {2})(\ d {3})([0-9] | X)$ /;
var arr_data = card.match(re_eighteen);
var year = arr_data [2];
var month = arr_data [3];
var day = arr_data [4];
可变生日=新日期(年+'/'+月+'/'+天);
返回verifyBirthday(年,月,日,生日);
}
返回假;
};
//验证日期
verifyBirthday =函数(年,月,日,生日)
{
var now = new Date();
var now_year = now.getFullYear();
//年,月和日是否合理?
如果(birthday.getFullYear()==年&&(birthday.getMonth()+ 1)==月&& Birthday.getDate()==天)
{
//判断年份范围(3至100岁之间)
var time = now_year-year;
如果(时间> = 3 &&时间<= 100)
{
返回true;
}
返回假;
}
返回假;
};
//校验位校验
checkParity =函数(卡)
{
// 15位到18位
card = changeFivteenToEighteen(卡片);
var len = card.length;
如果(len =='18')
{
var arrInt =新数组(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8js正则判断号码,4,2);
var arrCh =新数组('1','0','X','9','8','7','6','5','4','3',' 2');
var cardTemp = 0,i,valnum;
for(i = 0; i <17; i ++)
{
cardTemp + = card.substr(i,1)* arrInt [i];
}
valnum = arrCh [cardTemp%11];
如果(valnum == card.substr(17js正则判断号码,1))
{
返回true;
}
返回假;
}
返回假;
};
// 15位至18位ID号
changeFivteenToEighteen =函数(卡)
{
如果(card.length =='15')
{
var arrInt =新数组(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
var arrCh =新数组('1','0','X','9','8','7','6','5','4','3',' 2');
var cardTemp = 0,i;
card = card.substr(0,6)+'19'+ card.substr(6,card.length-6);
for(i = 0; i <17; i ++)
{
cardTemp + = card.substr(i,1)* arrInt [i];
}
card + = arrCh [cardTemp%11];
归还卡;
}
归还卡;
};
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-190069-1.html
不吃你这套
就应该采取利比亚那样
除了有点儿卡
我们的海军和先进武器在哪
20