首先写一个方法来判断是否是闰年
public static boolean isLeapYear(String year) {
Long yearL = Long.parseLong(year);
if ((yearL % 4 == 0) && (yearL % 100 != 0) || (yearL % 400 == 0)) {
return true;
}
return false;
}
写一个方法获取一年中某个月对应的天数
public static int getDays(String year, int month) {
int days = 0;
switch (month) {
case 1:
days = 31;
break;
case 3:
days = 31;
break;
case 5:
days = 31;
break;
case 7:
days = 31;
break;
case 8:
days = 31;
break;
case 10:
days = 31;
break;
case 12:
days = 31;
break;
case 2:
if (isLeapYear(year))
days = 29;
else
days = 28;
break;
default:
days = 30;
}
return days;
}
有了上面的两个方法,在下面的方法中进行调用来判断身份证号码是否是正确
public static boolean validateIdNumber(String idNumber) {
//
Pattern p1 = Pattern.compile("(\\d{17}[0-9xX]|\\d{14}[0-9xX])");
Matcher matcher = p1.matcher(idNumber);
if (matcher.matches()) {
Pattern p2 = Pattern.compile("\\d{6}(\\d{8}).*"); // 用于提取出生日字符串
Pattern p3 = Pattern.compile("(\\d{4})(\\d{2})(\\d{2})");// 用于将生日字符串进行分解为年月日
Matcher matcher2 = p2.matcher(idNumber);
boolean flag = matcher2.find();
if (flag) {
String date = matcher2.group(1);
Matcher matcher3 = p3.matcher(date);
if (matcher3.find()) {
String year = matcher3.group(1);
int month = Integer.parseInt(matcher3.group(2));
int day = Integer.parseInt(matcher3.group(3));
if (month < 1 || month > 12) {
return false;
}
if (day > getDays(year, month) || day < 1) {
return false;
}
return true;
}
}
}
return false;
}
这个方法基本能满足验证身份证号码是否符合规则,不过也有缺陷没有办法来判断地区行政代码是否正确。因为地区代码会有调整,很难控制。
分享到:
相关推荐
总结来说,Java验证身份证号码校验码是否正确的关键是理解身份证号码的构成规则和校验码的计算方法,然后编写相应的代码进行逻辑判断。通过上述方法,我们可以在Java程序中实现对身份证号码的准确验证,确保处理个人...
如果身份证号码的前17位数字正确,那么第18位应该能通过校验,反之则可能存在问题。 在实际应用中,开发者可以编写程序来自动解析身份证号码。通常,会使用正则表达式来验证身份证号码的格式,然后通过上述规则提取...
此外,如果需要验证身份证号码的合法性,可以使用Java编写算法检查其校验码是否正确,这涉及到对身份证号码的数学计算和模运算。 总结来说,Java可以通过第三方库实现IP地址的地理位置查询,同时可以通过身份证号码...
”, “身份证号码位数不对!”, “身份证号码出生日期超出范围或含有非法字符!”, “身份证号码校验错误!”, “身份证地区非法!” ); var area={11:”北京”,12:”天津”,13:”河北”,14:”山西”,15:”内蒙古”,21:...
5. **异常处理**:在处理身份证号码时,可能会遇到无效的输入,比如长度不正确或校验码错误。Java的异常处理机制(`try-catch`语句)是必要的,可以捕获并处理这些问题,确保程序的健壮性。 6. **类和对象设计**:...
在实际项目中,我们还需要考虑身份证号码的有效性验证,例如使用Luhn算法检查校验码是否正确,或者验证日期是否合理等。这需要额外的逻辑来确保输入数据的质量。 此外,标签中的“工具”可能指的是开发者可以使用...
4. 校验码(第18位):也称为验证码或检验位,用于检测身份证号码的正确性,可为0-9或X。 身份证验证程序的核心是校验码的计算。校验码的计算方法如下: 1. 将前17位数字分别乘以不同的系数(系数为:7,9,10,5,8,4,...
复杂校验不仅检查长度,还对身份证号码的合理性进行判断,包括出生日期的有效性以及校验码的正确性。这种方法更适用于需要高度准确性的场景。 1. **长度验证**:首先确保身份证号码为15位或18位,且15位号码全部由...
其中,顺序码对于男性是奇数,女性是偶数,校验码则通过特定算法计算得出,用于检查身份证号码的正确性。 在Java中,我们可以创建一个方法来验证身份证号码的合法性。这个方法通常包括以下几个步骤: 1. **长度...
这个"Java写的身份证验证程序"是一个用Java编程语言编写的软件模块,其目的是检查输入的身份证号码是否合法,符合中国的身份证号码规则。下面将详细探讨相关的Java编程知识和身份证号码验证的逻辑。 1. **Java基础*...
如果输出结果正确,那么我们就成功地将身份证号码转换成了用户的年龄。 在这个过程中,我们使用了以下几个关键技术: 1. 字符串操作:我们使用了 substring 和 toCharArray 方法来拆分身份证号码,并将其组合成一...
在Java编程领域,身份证验证程序是一个实用的工具,它能够检查输入的身份证号码是否符合中国的身份证格式,并从中提取出如年龄、性别和籍贯等信息。以下是对这个主题的详细阐述: 身份证号码验证首先需要理解中国...
在Java编程中,身份证号码的校验码是用于验证身份证号码正确性的重要组成部分。18位身份证号码由17位数字和1位校验码组成,校验码的计算遵循特定的算法。以下是对给定代码的详细解释,以及如何理解和实现这个算法。 ...
然后,我们可以比较用户输入的身份证号的第18位与计算出的校验码是否一致,如果不一致则说明身份证号码无效。 此外,程序还需要检查身份证号码的长度、格式以及日期的合理性。例如,日期部分必须符合公历日期的规则...
`checkURL`方法用于验证URL格式是否正确,其正则表达式为: ```java "[a-zA-z]+://[^\\s]*" ``` 这个表达式检查URL是否以合法的协议(如http、https等)开头,并且后面不包含空格。 ### 9. IP地址验证 IP地址的...
本话题聚焦于一个特定的Java程序——身份证验证程序,它可能是用于检查输入的身份证号码是否合法。在中国,身份证号码是一个18位的数字,包含了个人信息如出生日期、性别、地区代码等。以下将详细讲解身份证验证程序...
7. **控制流程**:在验证身份证号码的过程中,可能会用到`if`条件判断语句和`while`循环等控制结构,以确保每个步骤都能正确执行。 8. **函数封装**:为了代码的可读性和可维护性,可以将每一步验证过程封装为单独...
### JAVA判断字符串是否为数字字符 在日常的Java开发工作中,我们经常需要验证用户输入的数据是否符合预期格式,比如验证电话号码、身份证号等是否仅包含数字。这种情况下,一个简单有效的工具方法就显得尤为重要了...
在Java编程中,身份证验证是常见的功能,用于检查输入的身份证号码是否符合中国的身份证号码规则。这个示例展示了如何在Java中实现一个简单的身份证验证工具类`IdcardUtil`。以下将详细介绍该类的主要功能和实现方法...