diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/PatternPool.java b/hutool-core/src/main/java/cn/hutool/core/lang/PatternPool.java index 854de2b37..cfb0b8c3d 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/PatternPool.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/PatternPool.java @@ -56,10 +56,6 @@ public class PatternPool { * 移动电话 */ public final static Pattern MOBILE = Pattern.compile("(?:0|86|\\+86)?1[3-9]\\d{9}"); - /** - * 18位身份证号码 - */ - public final static Pattern CITIZEN_ID = Pattern.compile("[1-9]\\d{5}[1-2]\\d{3}((0\\d)|(1[0-2]))(([012]\\d)|3[0-1])\\d{3}(\\d|X|x)"); /** * 邮编 */ diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java b/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java index 6b6946920..4e3d1d710 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.IdcardUtil; import java.net.MalformedURLException; import java.util.regex.Matcher; @@ -51,10 +52,6 @@ public class Validator { * 移动电话 */ public final static Pattern MOBILE = PatternPool.MOBILE; - /** - * 身份证号码 - */ - public final static Pattern CITIZEN_ID = PatternPool.CITIZEN_ID; /** * 邮编 */ @@ -724,19 +721,17 @@ public class Validator { } /** - * 验证是否为身份证号码(18位中国)
- * 出生日期只支持到到2999年 + * 验证是否为身份证号码(支持18位、15位和港澳台的10位) * - * @param value 值 - * @return 是否为身份证号码(18位中国) + * @param value 身份证号,支持18位、15位和港澳台的10位 + * @return 是否为有效身份证号码 */ public static boolean isCitizenId(CharSequence value) { - return isMatchRegex(CITIZEN_ID, value); + return IdcardUtil.isValidCard(String.valueOf(value)); } /** - * 验证是否为身份证号码(18位中国)
- * 出生日期只支持到到2999年 + * 验证是否为身份证号码(支持18位、15位和港澳台的10位) * * @param 字符串类型 * @param value 值 diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java index a33f51301..720bba7f6 100644 --- a/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java @@ -71,8 +71,17 @@ public class ValidatorTest { @Test public void isCitizenIdTest() { - boolean b = Validator.isCitizenId("150218199012123389"); + // 18为身份证号码验证 + boolean b = Validator.isCitizenId("110101199003074477"); Assert.assertTrue(b); + + // 15位身份证号码验证 + boolean b1 = Validator.isCitizenId("410001910101123"); + Assert.assertTrue(b1); + + // 10位身份证号码验证 + boolean b2 = Validator.isCitizenId("U193683453"); + Assert.assertTrue(b2); } @Test(expected = ValidateException.class)