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

js验证身份证号码正则表达式

身份证号码的正则表达式主要用于验证身份证号码的格式是否正确。中国的身份证号码有两种格式:15位和18位。15位身份证号码由6位地址码、6位出生日期码和3位顺序码组成;18位身份证号码由6位地址码、8位出生日期码、3位顺序码和1位校验码组成。

基础概念

  • 地址码:表示身份证持有人的户籍所在地。
  • 出生日期码:表示身份证持有人的出生年月日。
  • 顺序码:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编订的顺序号。
  • 校验码:用于校验身份证号码的正确性。

正则表达式

以下是一个用于验证15位和18位身份证号码的正则表达式:

代码语言:txt
复制
const idCardRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;

优势

  • 简洁高效:正则表达式可以快速验证身份证号码的基本格式。
  • 易于实现:在JavaScript中,使用正则表达式进行验证非常方便。

类型

  • 15位身份证号码^\d{15}$
  • 18位身份证号码^\d{18}$
  • 17位加校验码的身份证号码^\d{17}(\d|X|x)$

应用场景

  • 用户注册:在用户注册时验证身份证号码的合法性。
  • 数据校验:在数据处理过程中,确保身份证号码格式正确。

示例代码

以下是一个完整的JavaScript示例,用于验证身份证号码:

代码语言:txt
复制
function validateIdCard(idCard) {
  const idCardRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  if (!idCardRegex.test(idCard)) {
    return false;
  }

  // 验证18位身份证号码的校验码
  if (idCard.length === 18) {
    const weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    const checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
    let sum = 0;
    for (let i = 0; i < 17; i++) {
      sum += parseInt(idCard.charAt(i)) * weight[i];
    }
    const mod = sum % 11;
    return checkCode[mod] === idCard.charAt(17).toUpperCase();
  }

  return true;
}

// 测试
console.log(validateIdCard('11010519491231002X')); // true
console.log(validateIdCard('110105194912310021')); // false
console.log(validateIdCard('110105491231002'));    // true
console.log(validateIdCard('1101054912310021'));   // false

可能遇到的问题及解决方法

  1. 格式不正确:使用正则表达式验证身份证号码的基本格式。
  2. 校验码错误:对于18位身份证号码,需要额外验证校验码的正确性。

通过上述方法,可以有效验证身份证号码的合法性,确保数据的准确性。

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

相关·内容

23分29秒

88.尚硅谷_JS基础_正则表达式语法

23分44秒

89.尚硅谷_JS基础_正则表达式语法

13分59秒

85.尚硅谷_JS基础_正则表达式的简介

10分50秒

javaweb项目实战 20-在前端使用JS批量验证用户注册 学习猿地

10分15秒

爬虫逆向进阶实战-某新闻加密参数分析和还原

803
领券