Class IdcardUtils
用于身份证号码的验证、转换和处理
主要功能: 1. 验证15位和18位身份证号码的有效性 2. 将15位身份证号码转换为18位 3. 检查身份证号码格式是否正确 4. 验证身份证号码中的省份代码、出生日期等信息
支持的身份证类型: - 15位身份证号码 - 18位身份证号码(包含校验码)
- Author:
- Kerbores(kerbores@riemann.tech)
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic int[]converCharToInt(char[] c) 将字符数组转换为整数数组static StringconvertIdcarBy15bit(String idcard) 将15位身份证号码转换为18位static StringgetCheckCodeBySum(int sum17) 根据权重和获取身份证校验码static intgetPowerSum(int[] bit) 计算身份证校验码的权重和static booleanis15Idcard(String idcard) 检查是否为15位身份证号码格式static booleanis18Idcard(String idcard) 检查是否为18位身份证号码格式static boolean检查字符串是否为纯数字static boolean检查是否为身份证号码格式static booleanisValidate15Idcard(String idcard) 验证15位身份证号码static booleanisValidate18Idcard(String idcard) 验证18位身份证号码static booleanisValidatedAllIdcard(String idcard) 验证所有类型的身份证号码
-
Field Details
-
codeAndCity
省份代码和名称的二维数组存储了中国各省份、自治区、直辖市、特别行政区的代码和名称
格式:{代码, 名称}
-
-
Constructor Details
-
IdcardUtils
public IdcardUtils()
-
-
Method Details
-
isValidatedAllIdcard
验证所有类型的身份证号码支持15位和18位身份证号码的验证
如果是15位身份证,会先转换为18位再验证
- Parameters:
idcard- 身份证号码- Returns:
- 如果身份证号码有效返回true,否则返回false
-
isValidate18Idcard
验证18位身份证号码验证规则: 1. 长度必须为18位 2. 前17位必须为数字 3. 第18位校验码必须正确 4. M41: 出生日期(6-13位)必须真实存在且不晚于今天(与 15 位验证对称)
- Parameters:
idcard- 18位身份证号码- Returns:
- 如果身份证号码有效返回true,否则返回false
-
isValidate15Idcard
验证15位身份证号码验证规则: 1. 长度必须为15位 2. 必须全部为数字 3. 省份代码必须有效 4. 出生日期必须有效 5. 出生日期不能在当前日期之后
- Parameters:
idcard- 15位身份证号码- Returns:
- 如果身份证号码有效返回true,否则返回false
-
convertIdcarBy15bit
-
isIdcard
检查是否为身份证号码格式支持15位和18位身份证号码
正则表达式:(^\d{15}$)|(\d{17}(?:\d|x|X)$)
- Parameters:
idcard- 身份证号码- Returns:
- 如果是身份证号码格式返回true,否则返回false
-
is15Idcard
检查是否为15位身份证号码格式正则表达式:^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$
- Parameters:
idcard- 身份证号码- Returns:
- 如果是15位身份证号码格式返回true,否则返回false
-
is18Idcard
检查是否为18位身份证号码格式正则表达式:^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([\d|x|X]{1})$
- Parameters:
idcard- 身份证号码- Returns:
- 如果是18位身份证号码格式返回true,否则返回false
-
isDigital
检查字符串是否为纯数字正则表达式:^[0-9]*$
- Parameters:
str- 要检查的字符串- Returns:
- 如果是纯数字返回true,否则返回false
-
getPowerSum
public static int getPowerSum(int[] bit) 计算身份证校验码的权重和根据身份证前17位数字和对应的权重计算总和
- Parameters:
bit- 身份证前17位数字的整数数组- Returns:
- 权重和
-
getCheckCodeBySum
根据权重和获取身份证校验码将权重和与11取模,根据余数获取对应的校验码
余数与校验码的对应关系: 0 -> 1 1 -> 0 2 -> x 3 -> 9 4 -> 8 5 -> 7 6 -> 6 7 -> 5 8 -> 4 9 -> 3 10 -> 2
- Parameters:
sum17- 权重和- Returns:
- 校验码
-
converCharToInt
public static int[] converCharToInt(char[] c) 将字符数组转换为整数数组将身份证号码的字符数组转换为对应的整数数组,用于计算校验码
- Parameters:
c- 字符数组- Returns:
- 整数数组
-