From ad4326adc4ccad14f090fba5acb435deab8260db Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期二, 22 七月 2025 16:09:14 +0800 Subject: [PATCH] zjh20250722 --- ltkj-admin/src/test/java/zjhTest.java | 40 ++++++++++++++++++++++++++++++++++------ 1 files changed, 34 insertions(+), 6 deletions(-) diff --git a/ltkj-admin/src/test/java/zjhTest.java b/ltkj-admin/src/test/java/zjhTest.java index 468e350..63f8201 100644 --- a/ltkj-admin/src/test/java/zjhTest.java +++ b/ltkj-admin/src/test/java/zjhTest.java @@ -1,7 +1,6 @@ import cn.hutool.core.io.FileUtil; -import com.ltkj.LtkjApplication; -import com.ltkj.framework.config.MatchUtils; +import com.ltkj.LtkjApplication;import com.ltkj.framework.config.MatchUtils; import com.ltkj.hosp.domain.TjJcycxm; import com.ltkj.hosp.idutil.IdUtils; import jodd.util.StringUtil; @@ -33,6 +32,9 @@ import java.io.File; import java.io.IOException; + + + /** * @Author: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃/璧典匠璞� * @Date: 2022/12/12 9:05 @@ -69,16 +71,42 @@ } + private static final String[] CHECK_INDEX = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"}; public static void main(String[] args) throws Exception { - String s = "610124199809053678"; - String s1 = "610622199805230627"; - System.out.println(String.valueOf(MatchUtils.getAgeByIdCard(s))); - System.out.println(String.valueOf(MatchUtils.getAgeByIdCard(s1))); + String s = "62272219650528411X"; + System.out.println(isValidIdCard(s) ? "鍚堟硶" : "闈炴硶"); } + public static boolean isValidIdCard(String idCardNumber) { + // 姝e垯琛ㄨ揪寮忥紝鍖归厤韬唤璇佸彿鐮佺殑鏍煎紡 + String regex = "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(idCardNumber); + + // 鍒ゆ柇鏄惁鍖归厤韬唤璇佸彿鐮佺殑鏍煎紡 + if (!matcher.matches()) { + return false; + } + + // 楠岃瘉韬唤璇佸彿鐮佷腑鐨勬牎楠屼綅 + if (idCardNumber.length() == 18) { + int[] weights = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; + char[] chars = idCardNumber.toCharArray(); + int sum = 0; + for (int i = 0; i < weights.length; i++) { + sum += (chars[i] - '0') * weights[i]; + } + char[] checkCodes = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; + char checkCode = checkCodes[sum % 11]; + return chars[17] == checkCode || (chars[17] == 'x' && checkCode == 'X'); + } + + return true; + } + /** * 鎵ц鐢熸垚 -- Gitblit v1.8.0