根据身份证号码,提取出生日期和性别

根据身份证号码,提取出生日期和性别,返回的数据是一个对象 具体实现请看以下代码

/**
 * 根据身份证号码,提取出生日期和性别
 * @param idCard
 * @return gendar: 1 男 2 女 birthDate: 2020-01-01
 */
export function extractGenderAndBirthDate(
  idCard: string,
): { gender: 2 | 1; birthDate: string } | null {
  // 校验身份证号码格式
  //idCardRegex 来验证身份证号码的格式。这个正则表达式匹配以数字 1-9 开头的 18 位身份证号码,其中包括了出生年(1800年-2099年),月份(01-12),日期(01-31),以及后面的序列号和校验位(可以是数字或X)。如果身份证号码不匹配这个正则表达式,函数将返回 null
  const idCardRegex = /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0\d|1[0-2])(?:0\d|1\d|2\d|3[01])\d{3}[\dX]$/;
  if (!idCardRegex.test(idCard)) {
    return null;
  }

  // 提取出生日期
  const birthYear = idCard.substring(6, 10);
  const birthMonth = idCard.substring(10, 12);
  const birthDay = idCard.substring(12, 14);

  // 构造出生日期字符串
  const birthDate = `${birthYear}-${birthMonth.padStart(2, '0')}-${birthDay.padStart(2, '0')}`;

  // 提取性别
  const genderCode = parseInt(idCard.substring(16, 17), 10);
  const gender = genderCode % 2 === 0 ? 2 : 1;

  return { gender, birthDate };
}

你可能感兴趣的:(javascript,前端,开发语言)