返回
正则表达式教程:15位一代身份证号验证
正则表达式
2024-02-28 16:00: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