如何用正则表达式验证身份证的正确性?

12 min read

以下是一个简单的身份证号码验证正则表达式,可以验证身份证号码的格式是否正确:

/^\d{17}(\d|X)$/

其中,\d 匹配任意数字字符,{17} 表示前面的数字字符必须出现 17 次,(\d|X) 匹配最后一位数字或 X 字符,^$ 表示字符串的开始和结束。

例如,下面的代码演示了如何使用这个正则表达式验证身份证号码是否正确:

function validateIdCard(idCard) {
  var pattern = /^\d{17}(\d|X)$/;
  return pattern.test(idCard);
}

console.log(validateIdCard("110101199003072371")); // true
console.log(validateIdCard("11010119900307237X")); // true
console.log(validateIdCard("11010119900307")); // false
console.log(validateIdCard("1101011990030723722")); // false
console.log(validateIdCard("11010119900307A372")); // false

请注意,这个正则表达式只验证身份证号码的格式是否正确,而不对身份证号码的真实性进行验证。真正的身份证验证还需要验证身份证号码中的地区码、出生日期码和校验码是否正确。