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));
|
}
|
}
|