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