正则表达式验证身份证号
时间: 2024-04-19 18:22:22 浏览: 19
正则表达式是一种用于匹配字符串模式的工具,可以用来验证身份证号码。身份证号码的格式是固定的,一般为18位数字(最后一位可能是数字或字母X)。下面是一个简单的正则表达式示例,用于验证身份证号码:
^\d{17}[\dX]$
解释一下这个正则表达式:
- ^ 表示匹配字符串的开始位置
- \d 表示匹配一个数字
- {17} 表示前面的\d需要出现17次
- [\dX] 表示匹配一个数字或字母X
- $ 表示匹配字符串的结束位置
所以,这个正则表达式可以用来验证一个18位的身份证号码是否合法。
相关问题
正则表达式验证身份证号码
正则表达式验证中国大陆身份证号码:
```javascript
/^\d{17}(\d|x)$/i
```
解释:
- `^` 匹配字符串开始
- `\d` 匹配数字
- `{17}` 匹配前面的数字 17 次
- `(\d|x)` 匹配最后一位数字或字母 x
- `i` 表示大小写不敏感
- `$` 匹配字符串结束
示例:
```javascript
const regex = /^\d{17}(\d|x)$/i;
const id1 = '110101199003075192'; // 正确
const id2 = '11010119900307519x'; // 正确
const id3 = '11010119900307519X'; // 正确
const id4 = '11010119900307519'; // 错误,长度不足
const id5 = '1101011990030751921'; // 错误,长度超过 18 位
console.log(regex.test(id1)); // true
console.log(regex.test(id2)); // true
console.log(regex.test(id3)); // true
console.log(regex.test(id4)); // false
console.log(regex.test(id5)); // false
```
java使用正则表达式验证身份证号
可以使用以下代码来验证身份证号是否合法:
```java
public static boolean isValidIdCard(String idCard) {
// 身份证号正则表达式
String regx = "[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[012]))(([012]\\d)|3[01])\\d{3}[Xx\\d]";
Pattern pattern = Pattern.compile(regx);
Matcher matcher = pattern.matcher(idCard);
if (!matcher.matches()) {
// 身份证号不合法
return false;
}
// 验证身份证号最后一位校验码
int[] factor = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char[] code = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (idCard.charAt(i) - '0') * factor[i];
}
if (idCard.charAt(17) == 'x' || idCard.charAt(17) == 'X') {
return code[sum % 11] == 'X';
} else {
return code[sum % 11] == idCard.charAt(17);
}
}
```
该代码使用正则表达式验证身份证号格式是否正确,然后再验证身份证号的最后一位校验码是否正确,如果都正确则返回 true,否则返回 false。