From 0de458192755ae994f1a9bd8dae40f2611c6900a Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 30 Jul 2024 16:00:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DIdcardUtil.isValidHKCard?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../src/main/java/cn/hutool/core/util/IdcardUtil.java | 4 ++++ .../src/test/java/cn/hutool/core/util/IdcardUtilTest.java | 8 ++++++++ 3 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65a9e5d5a..944da029e 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ * 【core 】 修复BeanUtil.copyProperties中mapToMap时key被转为String问题(issue#3645@Github) * 【core 】 修复FileUtil.file末尾换行符导致路径判断错误的问题(issue#IAB65V@Gitee) * 【core 】 修复FileTypeUtil.getType空指针问题(issue#IAD5JM@Gitee) +* 【core 】 修复IdcardUtil.isValidHKCard校验问题(issue#IAFOLI@Gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.29(2024-07-03) 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 c2495212f..449983ae0 100755 --- a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java @@ -413,6 +413,10 @@ public class IdcardUtil { * @return 验证码是否符合 */ public static boolean isValidHKCard(String idcard) { + if(false == idcard.matches("^[A-Z]{1,2}[0-9]{6}\\(?[0-9A]\\)?$")){ + return false; + } + String card = idcard.replaceAll("[()]", ""); int sum; if (card.length() == 9) { 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 87aa9907c..e21151cb8 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 @@ -178,4 +178,12 @@ public class IdcardUtilTest { public void issueI88YKMTest() { Assert.assertTrue(IdcardUtil.isValidCard("111111111111111")); } + + @Test + public void issueIAFOLITest() { + String idcard = "H01487002"; + Assert.assertFalse(IdcardUtil.isValidHKCard(idcard)); + Assert.assertNull(IdcardUtil.isValidCard10(idcard)); + Assert.assertFalse(IdcardUtil.isValidCard(idcard)); + } }