JavaScript正则表达式验证身份证号

江屿
江屿
发布时间:2026-10-13| 4人浏览过
原创

身份证号码包含15位全数字版本及18位末位带X的版本。本文详解如何使用JavaScript正则表达式准确识别这两种格式,并提供完整的函数示例,帮助开发者在前端快速实现身份证号合法性校验。

身份证号码的构成规则

在中国,居民身份证号码主要分为两种长度和格式:

  • 15位旧版号码:全部由数字组成,无校验位。
  • 18位新版号码:前17位为数字,第18位为校验码。该位可能是0-9之间的数字,也可能是代表罗马数字10的大写字母“X”。

在进行前端验证时,我们需要编写一个正则表达式来严格匹配上述两种情况,排除包含字母(除末尾X外)、特殊符号或长度不符的输入。

核心正则表达式解析

用于匹配身份证的正则表达式如下:

(^\d{15}$)|(^\d{17}([0-9]|X)$)

该表达式的逻辑拆解:

  1. (^\d{15}$):匹配以15个数字开头并立即结束的行。这是15位身份证的标准格式。
  2. |:表示“或者”。
  3. (^\d{17}([0-9]|X)$):匹配以17个数字开头,接着是一个数字或字符“X”,然后立即结束的行。这覆盖了18位身份证的所有合法组合。

注意:X必须是大写,因为身份证系统中的校验码计算结果若为10,统一用大写X表示。

JavaScript验证函数实现

以下是基于上述正则的完整JavaScript验证函数。代码经过整理,修正了原稿中可能存在的缩进错误,并优化了逻辑结构。

function isIdCardNo(num) {
    // 将输入转换为大写,确保比较时不区分大小写问题(尽管只允许大写X)
    num = num.toUpperCase();
    
    // 定义正则表达式:15位全数字 OR 18位前17位数字+末位数字/X
    var reg = /(^\d{15}$)|(^\d{17}([0-9]|X)$)/;
    
    // 执行测试
    if (!reg.test(num)) {
        alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');
        return false;
    }
    
    // 如果通过验证
    return true;
}

// 使用示例
if (isIdCardNo("11010519491012361X")) {
    console.log("验证成功");
}

注意事项与排错

在实际应用此正则验证时,需注意以下几点以确保准确性:

  • 大小写处理:用户输入可能包含小写“x”,因此在正则判断前务必使用 toUpperCase() 进行转换,否则可能被误判为非法字符。
  • 非功能性验证:此方法仅验证格式是否正确(即长度和字符类型)。它无法验证生日是否存在、地区代码是否真实有效,也无法检测假号。如需高精度校验,建议结合后端API或详细的身份证校验算法(如模11算法)进行二次验证。
  • 空值检查:在调用函数前,建议先检查输入是否为空字符串或null,避免正则引擎抛出意外错误或产生不必要的开销。

以上就是JavaScript使用正则表达式验证身份证号的详细内容,更多关于JavaScript前端表单校验的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。