kongdeqiang
2 天以前 199202813dd8ca536ed2334f5eeb6aba3ad25b21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.boying.util;
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
/**
 * @author kdq
 * @version 1.0.0
 * @ClassName LicensePlateValidator.java
 * @Description TODO
 * @createTime 2025年01月07日 10:57:00
 */
public class LicensePlateValidator {
    private static final String LICENSE_PLATE_REGEX = "^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼使领A-Z]{1}[a-zA-Z](([ABCDF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[ABCDF]))|[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1})$";
    private static final Pattern pattern = Pattern.compile(LICENSE_PLATE_REGEX);
 
    public static boolean isValidLicensePlate(String licensePlate) {
        if (licensePlate == null) {
            return false;
        }
        Matcher matcher = pattern.matcher(licensePlate);
        return matcher.matches();
    }
 
    public static void main(String[] args) {
        String[] testPlates = {"京A12345","冀DF123456", "沪B67890", "川C00001", "XYZ12345", "京A1234"};
 
        for (String plate : testPlates) {
            System.out.println("车牌号 " + plate + " 是否有效: " + isValidLicensePlate(plate));
        }
    }
 
}