在 Java 中匹配中国居民身份证号,通常分两种情况:
X(大小写均可)^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
import java.util.regex.Pattern;
public class IdCardTest {
public static void main(String[] args) {
String regex = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$";
String id = "11010519491231002X";
boolean match = Pattern.matches(regex, id);
System.out.println(match); // true
}
}
^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}$
String regex =
"^[1-9]\\d{5}" +
"(" +
"\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}" + // 15位
"|" +
"(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]" + // 18位
")$";
⚠️ 正则只能校验格式,不能校验:
IdcardUtilimport cn.hutool.core.lang.idcard.IdcardUtil;
public class Test {
public static void main(String[] args) {
System.out.println(IdcardUtil.isValidCard("11010519491231002X"));
}
}
如果你需要:
可以告诉我,我可以给你完整工具类代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。