首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js身份证号正则

在JavaScript中,用于验证中国大陆身份证号码的正则表达式如下:

代码语言:txt
复制
/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X|x)$/

基础概念

  • 正则表达式:一种用于匹配字符串中字符组合的模式,常用于数据验证、搜索和替换等操作。
  • 身份证号码:中国大陆地区公民的唯一身份标识,18位数字组成,包含地区码、出生日期、顺序码和校验码。

优势

  • 准确性:能有效验证身份证号码的格式和校验位。
  • 效率:正则表达式匹配速度快,适用于前端实时验证。

类型

  • 15位身份证号:早期发放,现已基本停用。
  • 18位身份证号:当前标准格式,包含校验码。

应用场景

  • 用户注册:确保用户输入的身份证号码格式正确。
  • 信息验证:在需要验证用户身份信息的系统中使用。

示例代码

代码语言:txt
复制
function validateIDCard(idCard) {
    const regex = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X|x)$/;
    return regex.test(idCard);
}

// 测试
console.log(validateIDCard("11010519491231002X")); // true
console.log(validateIDCard("110105194912310021")); // false

常见问题及解决方法

  • 校验码错误:18位身份证号的最后一位可能是数字或X/x,需要正确处理大小写。
  • 日期错误:确保月份和日期在合理范围内,如月份为01-12,日期为01-31(需考虑闰年和平年的2月天数)。

解释

  • ^[1-9]\d{5}:前6位是地区码,第一位不能为0。
  • (18|19|20)\d{2}:年份部分,1800-2099年。
  • (0[1-9]|1[0-2]):月份部分,01-12月。
  • (0[1-9]|[12]\d|3[01]):日期部分,01-31日。
  • \d{3}:顺序码,3位数字。
  • (\d|X|x)$:校验码,可以是数字或X/x。

通过上述正则表达式和代码示例,可以有效地验证身份证号码的格式和校验位,确保数据的准确性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券