JS 身份证号校验 年龄校验
2015-06-26 10:49
501 查看
// js 身份证号码校验
function isCnNewID(cid){
var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子
var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码
if(/^\d{17}\d|x$/i.test(cid)){
var sum = 0, idx;
for(var i = 0; i < cid.length - 1; i++){
// 对前17位数字与权值乘积求和
sum += parseInt(cid.substr(i, 1), 10) * arrExp[i];
}
// 计算模(固定算法)
idx = sum % 11;
// 检验第18为是否与校验码相等
return arrValid[idx] == cid.substr(17, 1).toUpperCase();
}else{
return false;
}
}
/**
* 获取当前添加身份证号的出生年月
* @param idCard
* @return
*/
function getBirthdayFromIdCard (idCard) {
var birthday = "";
if(idCard.length == 15){
birthday = "19"+idCard.substr(6,6);
} else if(idCard.length == 18){
birthday = idCard.substr(6,8);
}
birthday = birthday.replace(/(.{4})(.{2})/,"$1-$2-");
return birthday;
}
/**
* 判断是否大于18岁
* @param date
* @return
*/
function checkAgeData(date){
var arrDate = date.split("-");
var jsNow= new Date();
var jsDate = new Date(arrDate[0],arrDate[1]-1,arrDate[2]);
nowYear= jsNow.getFullYear(); //获取完整的年份(4位,1970-????)
nowMonth=jsNow.getMonth()+1; //获取当前月份(0-11,0代表1月)
nowDate=jsNow.getDate(); //获取当前日(1-31)
jsYear=jsDate.getFullYear();
jsMonth=jsDate.getMonth()+1;
jsDate=jsDate.getDate();
if(nowYear-jsYear<18){ //如果年份小于18,直接返回false
return false;
}else if(nowYear-jsYear==18){ //如果年份差等于18,则比较月份
if(nowMonth>jsMonth){//年份等于18时,当前月份大于出生月份
return false;
}else if(nowMonth==jsMonth){//如果月份也相等,则比较日期
if(nowDate<jsDate){ //年份等于18,月份相等时,如果当前日期小于出生日期,
return false;
}
}
}
return true;
}
function isCnNewID(cid){
var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子
var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码
if(/^\d{17}\d|x$/i.test(cid)){
var sum = 0, idx;
for(var i = 0; i < cid.length - 1; i++){
// 对前17位数字与权值乘积求和
sum += parseInt(cid.substr(i, 1), 10) * arrExp[i];
}
// 计算模(固定算法)
idx = sum % 11;
// 检验第18为是否与校验码相等
return arrValid[idx] == cid.substr(17, 1).toUpperCase();
}else{
return false;
}
}
/**
* 获取当前添加身份证号的出生年月
* @param idCard
* @return
*/
function getBirthdayFromIdCard (idCard) {
var birthday = "";
if(idCard.length == 15){
birthday = "19"+idCard.substr(6,6);
} else if(idCard.length == 18){
birthday = idCard.substr(6,8);
}
birthday = birthday.replace(/(.{4})(.{2})/,"$1-$2-");
return birthday;
}
/**
* 判断是否大于18岁
* @param date
* @return
*/
function checkAgeData(date){
var arrDate = date.split("-");
var jsNow= new Date();
var jsDate = new Date(arrDate[0],arrDate[1]-1,arrDate[2]);
nowYear= jsNow.getFullYear(); //获取完整的年份(4位,1970-????)
nowMonth=jsNow.getMonth()+1; //获取当前月份(0-11,0代表1月)
nowDate=jsNow.getDate(); //获取当前日(1-31)
jsYear=jsDate.getFullYear();
jsMonth=jsDate.getMonth()+1;
jsDate=jsDate.getDate();
if(nowYear-jsYear<18){ //如果年份小于18,直接返回false
return false;
}else if(nowYear-jsYear==18){ //如果年份差等于18,则比较月份
if(nowMonth>jsMonth){//年份等于18时,当前月份大于出生月份
return false;
}else if(nowMonth==jsMonth){//如果月份也相等,则比较日期
if(nowDate<jsDate){ //年份等于18,月份相等时,如果当前日期小于出生日期,
return false;
}
}
}
return true;
}
相关文章推荐
- js关于事件的一些总结(系列一)
- JavaScript introduction.
- js数组传到后台
- Json经典文章
- js实现数组转换成json
- IText&Html2canvas js截图 绘制 导出PDF
- [LeetCode][JavaScript]Summary Ranges
- Objc与JS间相互调用
- jsp 页面中 判断session是否失效
- jstree 取消选中父节点
- 用gson处理json时bean和json串的对应关系
- javascript变量初始化位置
- javascript实现倒计时(精确到秒)
- js计算2个日期之间相差天数
- href=“#”与href="javascript:void(0)" 的区别
- Extjs sencha cmd打包压缩部署 前台代码压缩
- 详解JavaScript立即执行函数表达式
- arguments对象验证函数的参数是否合法
- Why we made vorlon.js and how to use it to debug your JavaScript remotely
- JavaScript + CSS3 实现的海报画廊特效