从盛大通行证上摘下来的身份证验证js代码

复制代码 代码如下:

  <script language="javascript" type="text/javascript">

  function CheckIdCardField(v_card) {

  var reg = /^\d{15}(\d{2}[0-9X])?$/i;

  if (!reg.test(v_card)) {

  return false;

  }

  if (v_card.length == 15) {

  var n = new Date();

  var y = n.getFullYear();

  if (parseInt("19" + v_card.substr(6, 2)) < 1900 || parseInt("19" + v_card.substr(6, 2)) > y) {

  return false;

  }

  var birth = "19" + v_card.substr(6, 2) + "-" + v_card.substr(8, 2) + "-" + v_card.substr(10, 2);

  if (!isDate(birth)) {

  return false;

  }

  }

  if (v_card.length == 18) {

  var n = new Date();

  var y = n.getFullYear();

  if (parseInt(v_card.substr(6, 4)) < 1900 || parseInt(v_card.substr(6, 4)) > y) {

  return false;

  }

  var birth = v_card.substr(6, 4) + "-" + v_card.substr(10, 2) + "-" + v_card.substr(12, 2);

  if (!isDate(birth)) {

  return false;

  }

  iW = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);

  iSum = 0;

  for (i = 0; i < 17; i++) {

  iC = v_card.charAt(i);

  iVal = parseInt(iC);

  iSum += iVal * iW[i];

  }

  iJYM = iSum % 11;

  if (iJYM == 0) sJYM = "1";

  else if (iJYM == 1) sJYM = "0";

  else if (iJYM == 2) sJYM = "x";

  else if (iJYM == 3) sJYM = "9";

  else if (iJYM == 4) sJYM = "8";

  else if (iJYM == 5) sJYM = "7";

  else if (iJYM == 6) sJYM = "6";

  else if (iJYM == 7) sJYM = "5";

  else if (iJYM == 8) sJYM = "4";

  else if (iJYM == 9) sJYM = "3";

  else if (iJYM == 10) sJYM = "2";

  var cCheck = v_card.charAt(17).toLowerCase();

  if (cCheck != sJYM) {

  return false;

  }

  }

  return true;

  }

  </script>