validator.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. //身份证号验证
  2. export const getIdcardInfo = (idcard_no, validateAge = [0, 100]) => {
  3. let validate = /^[1-9]\d{5}(19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(
  4. idcard_no
  5. );
  6. if (validate !== true) return false;
  7. let sex = null;
  8. let birth = null;
  9. let myDate = new Date();
  10. let month = myDate.getMonth() + 1;
  11. let day = myDate.getDate();
  12. let age = 0;
  13. if (idcard_no.length === 18) {
  14. age = myDate.getFullYear() - idcard_no.substring(6, 10) - 1;
  15. sex = idcard_no.substring(16, 17);
  16. birth =
  17. idcard_no.substring(6, 10) +
  18. "-" +
  19. idcard_no.substring(10, 12) +
  20. "-" +
  21. idcard_no.substring(12, 14);
  22. age++;
  23. } else if (idcard_no.length === 15) {
  24. age = myDate.getFullYear() - idcard_no.substring(6, 8) - 1901;
  25. sex = idcard_no.substring(13, 14);
  26. birth =
  27. "19" +
  28. idcard_no.substring(6, 8) +
  29. "-" +
  30. idcard_no.substring(8, 10) +
  31. "-" +
  32. idcard_no.substring(10, 12);
  33. age++;
  34. }
  35. // 验证年龄
  36. if (validateAge instanceof Array) {
  37. if (age < validateAge[0] || age > validateAge[1]) {
  38. return false;
  39. }
  40. }
  41. if (sex % 2 === 0) sex = "0";
  42. else sex = "1";
  43. return {
  44. age,
  45. sex,
  46. birth,
  47. };
  48. };