xuhy
2025-12-10 df06f797dbc1dea300a338739a361e59ca342c29
bug修改
1个文件已添加
1个文件已修改
49 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/IDCardValidatorWithEmpty.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TLargeKeyGridUser.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/IDCardValidatorWithEmpty.java
New file
@@ -0,0 +1,45 @@
package com.ruoyi.web.controller.tool;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class IDCardValidatorWithEmpty {
    // 定义支持空字符串的身份证号校验的正则表达式
    private static final String ID_CARD_REGEX = "^$|(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)";
    private static final String PHONE_REGEX = "^$|^1[3-9]\\d{9}$";
    private static final Pattern ID_CARD_PATTERN = Pattern.compile(ID_CARD_REGEX);
    private static final Pattern PHONE_PATTERN = Pattern.compile(PHONE_REGEX);
    /**
     * 校验身份证号的方法,允许空字符串
     * @param idCard 待校验的身份证号
     * @return 如果身份证号格式正确或者为空字符串返回 true,否则返回 false
     */
    public static boolean isValidIDCard(String idCard) {
        Matcher matcher = ID_CARD_PATTERN.matcher(idCard);
        return matcher.matches();
    }
    public static boolean isValidPhone(String phone) {
        Matcher matcher = PHONE_PATTERN.matcher(phone);
        return matcher.matches();
    }
    public static void main(String[] args) {
        // 测试用的 15 位身份证号
        String idCard15 = "110105880620517";
        // 测试用的 18 位身份证号
        String idCard18 = "51370119990231853X";
        // 无效的身份证号
        String invalidIdCard = "123456789012345678";
        // 空字符串
        String emptyIdCard = "";
        String phone = "11212312312";
        // 调用校验方法并输出结果
        System.out.println(idCard15 + " 是否为有效的身份证号: " + isValidIDCard(idCard15));
        System.out.println(idCard18 + " 是否为有效的身份证号: " + isValidIDCard(idCard18));
        System.out.println(invalidIdCard + " 是否为有效的身份证号: " + isValidIDCard(invalidIdCard));
        System.out.println("空字符串是否允许: " + isValidIDCard(emptyIdCard));
        System.out.println(phone + "是否为有效的手机号: " + isValidPhone(phone));
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TLargeKeyGridUser.java
@@ -65,12 +65,12 @@
    @TableField("user_sex")
    private Integer userSex;
//    @Pattern(regexp = "^$|(^[1-9]\\\\d{7}((0\\\\d)|(1[0-2]))(([0-2]\\\\d)|3[0-1])\\\\d{3}$)|(^[1-9]\\\\d{5}[1-9]\\\\d{3}((0\\\\d)|(1[0-2]))(([0-2]\\\\d)|3[0-1])((\\\\d{4})|\\\\d{3}[Xx])$)",message = "身份证号格式不正确")
//    @Pattern(regexp = "^$|(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)",message = "身份证号格式不正确")
    @ApiModelProperty(value = "身份证号")
    @TableField("id_card")
    private String idCard;
//    @Pattern(regexp = "^1[3-9]\\\\d{9}$",message = "手机号格式不正确")
//    @Pattern(regexp = "^$|^1[3-9]\\d{9}$",message = "手机号格式不正确")
    @ApiModelProperty(value = "联系电话")
    @TableField("contact_number")
    private String contactNumber;