diff --git a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java index e7adc4a38..970de3ffc 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java @@ -202,6 +202,24 @@ public class IdcardUtil { *
  • 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2
  • * * +

    + *

      + *
    1. 香港人在大陆的身份证,【810000】开头;同样可以直接获取到 性别、出生日期
    2. + *
    3. 81000019980902013X: 文绎循 男 1998-09-02
    4. + *
    5. 810000201011210153: 辛烨 男 2010-11-21
    6. + *
    + *
      + *
    1. 澳门人在大陆的身份证,【820000】开头;同样可以直接获取到 性别、出生日期
    2. + *
    3. 820000200009100032: 黄敬杰 男 2000-09-10
    4. + *
    + *
      + *
    1. 台湾人在大陆的身份证,【830000】开头;同样可以直接获取到 性别、出生日期
    2. + *
    3. 830000200209060065: 王宜妃 女 2002-09-06
    4. + *
    5. 830000194609150010: 苏建文 男 1946-09-14
    6. + *
    7. 83000019810715006X: 刁婉琇 女 1981-07-15
    8. + *
    + *

    + * * @param idcard 待验证的身份证 * @return 是否有效的18位身份证,忽略x的大小写 */ diff --git a/hutool-core/src/test/java/cn/hutool/core/util/IdcardUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/IdcardUtilTest.java index 24f423fc0..b9cd747a2 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/IdcardUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/IdcardUtilTest.java @@ -103,6 +103,18 @@ public class IdcardUtilTest { Assert.assertTrue(isValidCard18); isValidCard18 = IdcardUtil.isValidCard18("33010219200403064X"); Assert.assertTrue(isValidCard18); + + // 香港人在大陆身份证 + isValidCard18 = IdcardUtil.isValidCard18("81000019980902013X"); + Assert.assertTrue(isValidCard18); + + // 澳门人在大陆身份证 + isValidCard18 = IdcardUtil.isValidCard18("820000200009100032"); + Assert.assertTrue(isValidCard18); + + // 台湾人在大陆身份证 + isValidCard18 = IdcardUtil.isValidCard18("830000200209060065"); + Assert.assertTrue(isValidCard18); } @Test