java//在控制台上输入身份证号码,判断年月日是否符合规范用正则,需判断闰年平年,二月天数是否贵方
时间: 2024-04-10 09:32:35 浏览: 57
c++代码输入年月日,判断平年还是闰年并打印出那天是那年的第几天
5星 · 资源好评率100%
你可以使用正则表达式来验证身份证号码的年月日是否符合规范,并判断闰年和平年以及二月的天数。以下是一个示例的Java代码实现:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ValidateIDCard {
public static boolean validateIDCard(String idCard) {
// 正则表达式模式
String pattern = "^\\d{6}(19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|1\\d|2[0-8])\\d{3}[0-9Xx]$";
// 创建 Pattern 对象
Pattern regex = Pattern.compile(pattern);
// 创建 Matcher 对象
Matcher matcher = regex.matcher(idCard);
if (matcher.matches()) {
// 提取年、月、日
int year = Integer.parseInt(idCard.substring(6, 10));
int month = Integer.parseInt(idCard.substring(10, 12));
int day = Integer.parseInt(idCard.substring(12, 14));
// 判断闰年平年和二月天数
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
if (month == 2 && (day < 1 || day > 29)) {
return false;
}
} else {
if (month == 2 && (day < 1 || day > 28)) {
return false;
}
}
return true;
}
return false;
}
public static void main(String[] args) {
String idCard1 = "110101199003077990"; // 合法的身份证号码
String idCard2 = "110101199002297990"; // 非法的身份证号码
System.out.println(validateIDCard(idCard1)); // 输出:true
System.out.println(validateIDCard(idCard2)); // 输出:false
}
}
```
这段代码使用了正则表达式模式 `^\\d{6}(19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|1\\d|2[0-8])\\d{3}[0-9Xx]$` 来验证身份证号码的格式是否正确。然后,根据年份是否为闰年来判断二月的天数是否正确。
注意:这段代码只是基于身份证号码的规范格式进行验证,无法保证身份证号码的真实性。如果需要验证身份证号码的真实性,请使用其他更为复杂的验证算法。
阅读全文