返回

正则表达式教程:15位一代身份证号验证

正则表达式

一、正则解释

正则表达式:/^[1-9]\d{7}(?:0\d|10|11|12)(?:0[1-9]|[1-2][\d]|30|31)\d{3}$/

解释:

  • ^: 行首
  • [1-9]\d{7}: 第一位是1-9,后面跟随7位数字
  • (?:0\d|10|11|12): 月份,范围从01到12
  • (?:0[1-9]|[1-2][\d]|30|31): 日期,范围从01到31
  • \d{3}: 三位数字的后缀
  • $: 行尾

二、使用场景

此正则表达式可用于:

  • 验证15位一代身份证号码的有效性
  • 从文本或数据集中提取身份证号码

三、代码示例

JavaScript

const regex = /^[1-9]\d{7}(?:0\d|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}$/;
const isValid = regex.test("123456991010193");
console.log(isValid); // true

Java

import java.util.regex.Pattern;

public class IdCardValidator {

    public static boolean isValid(String idCard) {
        Pattern pattern = Pattern.compile("^[1-9]\\d{7}(?:0\\d|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}
import java.util.regex.Pattern;

public class IdCardValidator {

    public static boolean isValid(String idCard) {
        Pattern pattern = Pattern.compile("^[1-9]\\d{7}(?:0\\d|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}$");
        return pattern.matcher(idCard).matches();
    }

    public static void main(String[] args) {
        boolean isValid = isValid("123456991010193");
        System.out.println(isValid); // true
    }
}
quot;
); return pattern.matcher(idCard).matches(); } public static void main(String[] args) { boolean isValid = isValid("123456991010193"); System.out.println(isValid); // true } }

PHP

<?php

$regex = '/^[1-9]\d{7}(?:0\d|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}$/';
$isValid = preg_match($regex, "123456991010193");
var_dump($isValid); // bool(true)

?>

Python

import re

regex = r'^[1-9]\d{7}(?:0\d|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}
import re

regex = r'^[1-9]\d{7}(?:0\d|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}$'
isValid = re.match(regex, "123456991010193")
print(isValid) # True
#x27; isValid = re.match(regex, "123456991010193") print(isValid) # True