java身份证号码的正则表达式
时间: 2023-07-03 07:33:24 浏览: 219
Java身份证号码的正则表达式如下:
```java
String regex = "^(\\d{6})(19|20)(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[1-2]\\d|3[0-1])(\\d{3})(\\d|X|x)?$";
```
其中,正则表达式的含义为:
- ^:匹配字符串的开始位置
- \d:匹配数字字符
- {n}:匹配前面的字符n次
- ():表示一个分组
- []:表示一个字符集合
- |:表示或者
- [1-2]:表示1或2
- $:匹配字符串的结束位置
具体地,这个正则表达式匹配的身份证号码满足以下条件:
- 前6位为地区码,由数字组成
- 接下来的4位为年份,以19或20开头,由数字组成
- 接下来的2位为月份,由数字组成,范围为01~12
- 接下来的2位为日期,由数字组成,范围为01~31
- 接下来的3位为顺序码,由数字组成,表示该地区、该年份、该月份内的第几个人
- 最后一位为校验码,由数字或者X/x组成
这个正则表达式可以用于Java中的String.matches()等方法进行身份证号码的校验。
相关问题
java 判断身份证号码正则表达式脱敏
可以使用以下正则表达式判断身份证号码是否合法:
```
^(\\d{17}[\\d|x|X])$
```
具体实现可以使用 Java 中的 String.matches() 方法进行判断,示例代码如下:
```java
String idCard = "340123199012345678";
boolean isValid = idCard.matches("^(\\d{17}[\\d|x|X])$");
System.out.println(isValid); // 输出 true
```
如果需要进行脱敏处理,可以使用正则表达式和 String.replaceAll() 方法,将身份证号码中的敏感信息替换为指定字符,示例代码如下:
```java
String idCard = "340123199012345678";
String desensitizedIdCard = idCard.replaceAll("(\\d{4})\\d{10}(\\w{4})", "$1**********$2");
System.out.println(desensitizedIdCard); // 输出 3401**********5678
```
java身份证号正则表达式
以下是Java中身份证号正则表达式的例子:
```java
public static boolean isIDCard(String idCard) {
String regx = "[1-9]\\d{13,16}[a-zA-Z0-9]{1}";
return Pattern.matches(regx, idCard);
}
```
该正则表达式可以校验18位或15位身份证号码,其中前17位为数字,最后一位可以是数字或字母。
阅读全文