JS-根据身份证获取 出生日期和性别

一、根据身份证获取出生日期和性别/**
 * 根据身份证获取出生日期(yyyy-MM-dd)
 * @param psidno
 * @returns {birthday:yyyy-MM-dd}
 * @constructor
 */
function GetBirthday(psidno){
    var birthdayno,birthdaytemp
    if(psidno.length==18){
        birthdayno=psidno.substring(6,14)
    }else if(psidno.length==15){
        birthdaytemp=psidno.substring(6,12)
        birthdayno="19"+birthdaytemp
    }else{
        return "";
    }
    var birthday=birthdayno.substring(0,4)+"-"+birthdayno.substring(4,6)+"-"+birthdayno.substring(6,8)
    return birthday
}

/**
 *根据输入的身份证获取性别代码
 * @param psidno
 * @returns {sex}
 * @constructor
 */
function Getsex(psidno){
    var sexno,sex
    if(psidno.length==18){
        sexno=psidno.substring(16,17)
    }else if(psidno.length==15){
        sexno=psidno.substring(14,15)
    }else{
        return "";
    }
    var tempid=sexno%2;
    if(tempid==0){
        sex=‘F‘
    }else{
        sex=‘M‘
    }
    return sex
}
二、校验身份证有效性:

function CheckIdCard(idcard){
  var Errors=new Array(
    "验证通过!",
    "身份证号码位数不对!",
    "身份证号码出生日期超出范围或含有非法字符!",
    "身份证号码校验错误!",
    "身份证地区非法!"
  );
  var area={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:"国外"} 

  var idcard,Y,JYM;
  var S,M;
  var idcard_array = new Array();
  idcard_array = idcard.split("");
  //地区检验
  if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
  //身份号码位数及格式检验
  switch(idcard.length){
    case 15:
      if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 &&
          (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
        ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
      } else {
        ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
      }
      if(ereg.test(idcard)) return Errors[0];
      else return Errors[2]; 

      break;
    case 18:
  //18位身份号码检测
  //出生日期的合法性检查
  //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
  //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
      if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 &&
          parseInt(idcard.substr(6,4))%4 == 0 )){
        ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
      } else {
        ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
      }
      if(ereg.test(idcard)){//测试出生日期的合法性
      //计算校验位
      S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
        + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
        + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
        + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
        + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
        + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
        + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
        + parseInt(idcard_array[7]) * 1
        + parseInt(idcard_array[8]) * 6
        + parseInt(idcard_array[9]) * 3 ;
        Y = S % 11;
        M = "F";
        JYM = "10X98765432";
        M = JYM.substr(Y,1);//判断校验位
      if(M == idcard_array[17]) return Errors[0]; //检测ID的校验位
      else return Errors[3];
    }
    else return Errors[2];
    break;
    default:
    return Errors[1];
    break;
  } 

} 

原文地址:https://www.cnblogs.com/tuanz/p/8949895.html

时间: 2024-08-26 09:29:40

JS-根据身份证获取 出生日期和性别的相关文章

根据身份证获取出生日期及性别

CreateTime--2017年6月2日11:45:16Author:Marydon 第一步:身份证号格式校验 /** * 身份证号格式校验 */ function idValidator(obj) { var provinces={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", 21:"辽宁",22:"吉林",23:"

根据身份证号码自动获取出生日期,性别,籍贯

Q1:数据库 由于数据有点多,我们在这就不展示了(需要的联系我,我发给你) i 这是里面所用到的一些架包,包等等.相信大家对这一块都已经了解了,我就不说废话了. Q2:html文件 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <s

Excel通过身份证获取出生年月,性别,年龄,生肖,星座,省份等信息总结归纳

早期的身份证号码为15位数字,现在使用的身份证号码为18位数字,它们的含义如下:(1)15位:1-6位为地区代码,7-8位为出生年份(2位),9-10位为出生月份,11-12位为出生日期,第13-15位为顺序号,这3位奇数为男,偶数为女.(2)18位:1-6位为地区代码,7-10位为出生年份(4位),11-12位为出生月份,13-14位为出生日期,第15-17位为顺序号,同上,第18位为效验位. 在工作时,有时希望通过身份证号码,自动提取出出生日期.性别.年龄等信息.现在我们就通过几个公式,来得

沫沫金原创提供:完整的根据身份证获取省份、性别、年龄、生日及页面验证

概述: 身份证的校验,识别,分离,处处可见.最近H5移动端的项目就需要扫码获取身份证,根据身份证自动识别省份.性别.年龄.生日信息.这里分享完善版,希望大家喜欢. 环境: 依赖jQuery.BootStrap Html <form id="cardForm"> <div class="form-group"> <label>姓名</label> <input id="patientname"

js根据身份证号码解析获取出生年月日、性别、年龄

function getAnalysisIdCard(card, num) { if (num == 1) { //获取出生日期 let birth = card.substring(6, 10) + "-" + card.substring(10, 12) + "-" + card.substring(12, 14); return birth; } if (num == 2) { //获取性别 if (parseInt(card.substr(16, 1)) %

通过身份证号码获取人的年龄和性别

通过身份证号码获取人的年龄和性别:身份证可以识别一个人的信息,下面就介绍一下如何利用js通过身份证号码获取当事人的年龄和性别.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂

js验证身份证

在页面中通过js验证身份证合法性,一般是通过正则表达式或工具类进行判断.下面是项目中验证身份证的合法性代码实现. 第一种:通过正则表达式进行简单校验. if ($("#cardType").val() == "01") { var _cardNo = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if (!_cardNo.test(cardNo_val)) { $("#showerror").css(&q

js验证身份证号

/* * 身份证检测(格式.地区.生日.年龄范围) * code:检测字符串 rangeAge:年龄范围[格式为:25-55] * 返回值 0:为空 ,不为0则验证不通过 */ var cityArr = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "

js检验身份证

<%@ page language="java" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>从身份证号码中获取出生日期</title> <link href="CSS/style.css"