我们可以用正则表达式来定义复杂的字符串格式,(\d{17}[0-9a-zA-Z]|\d{14}[0-9a-zA-Z])可以用来判断是否为合法的15位或18位身份证号码。
因为15位和18位的身份证号码都是从7位到第12位为身份证为日期类型。这样我们可以设计出更精确的正则模式,使身份证号的日期合法,这样我们的正则模式可以进一步将日期部分的正则修改为[12][0-9]{3}[01][0-9][123][0-9],当然可以更精确的设置日期。
在jdk的java.util.Regex包中有实现正则的类,Pattern和Matcher。以下是实现代码:
package com.kettas; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Deno { public static void main(String[] args) { // 测试是否为合法的身份证号码 String[] strs = { "130681198712092019", "13068119871209201x", "13068119871209201", "123456789012345", "12345678901234x", "1234567890123" }; Pattern p1 = Pattern.compile("(\\d{17}[0-9a-zA-Z]|\\d{14}[0-9a-zA-Z])"); for (int i = 0; i < strs.length; i++) { Matcher matcher = p1.matcher(strs[i]); System.out.println(strs[i] + ":" + matcher.matches()); } Pattern p2 = Pattern.compile("\\d{6}(\\d{8}).*"); // 用于提取出生日字符串 Pattern p3 = Pattern.compile("(\\d{4})(\\d{2})(\\d{2})");// 用于将生日字符串进行分解为年月日 for (int i = 0; i < strs.length; i++) { Matcher matcher = p2.matcher(strs[i]); boolean b = matcher.find(); if (b) { String s = matcher.group(1); Matcher matcher2 = p3.matcher(s); if (matcher2.find()) { System.out .println("生日为" + matcher2.group(1) + "年" + matcher2.group(2) + "月" + matcher2.group(3) + "日"); } } } } }
相关推荐
excel取身份证年月日公式
部分代码: int main(int argc, char *argv[]) { int month,days,year,days_per_year,i=0; char str[]="Please input year,month,days:\n"; int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};...
计算身份证年龄包括年月日
从身份证号提取出生年月模板
Oracle身份证号码校验函数,可以将15位身份号码升为18位,检验出生年月等信息
从键盘输入一个18位或15位的身份证号码,显示器上输出年龄、性别、省份信息。
在Excel中从身份证提取出生年月、性别、年龄2009-10-19 17:27其实如果简单的从身份证号码中判断出该身份证主人的出生年月、性别、年龄是一件很简单的事,不过,我们在Excel里处理表格的时候,怎样快速地通过身份证...
输入两个年月日,(1)判断两个日期是否相同,并且将相差的天数显示出来;(2)将日期后推或前推N天,并将该日期输出。
设输入计身份证自动判断生日与男女功能,通过输入身份证号码信息,表格自动判断出生年月日,性别等。
身份证号校验器是一个可以用来验证身份证号码是否有效的验证工具。 特点: 1、支持批量输入验证 2、支持从数据库读取验证 3、支持SQL SERVER 4、支持ORACLE 根据〖中华人民共和国国家标准 GB 11643-1999〗中有关...
用C#实现的 从身份证号提取出生日期 控制台应用程序
微信小程序 -- 年月日时分秒 picker 选择器 基于微信小程序封装 月日时分秒 picker 选择器 封装插件 全局引用
身份证验证,获得出手年月日,性别,地址 身份证验证,获得出手年月日,性别,地址 只要导入jar包就直接可以 完全没问题
身份证号里获取出生年月 身份证号里获取出生年月 身份证号里获取出生年月
简单的Java身份证验证程序,包含15位和18位,验证了生日,性别和校验位,未验证地区码
批量按身份证查出生年月日公式函数,快速算出出生年月日。
判断语句制作年月日
* 身份证15位编码规则:dddddd yymmdd xx p * dddddd:地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,无法确定 * p: 性别,奇数为男,偶数为女 * <p /> * 身份证18位编码规则:dddddd yyyymmdd xxx y ...
身份证规则验证 错1个数字都不行 /** * 身份证15位编码规则:dddddd yymmdd xx p * dddddd:地区码 ... * i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置 * */
Java 根据用户指定的某年某月某日,判断这一天是一年中的第几天,具体思路是:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。这是一个...