本文主要是介绍最新版车牌号正则效验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
支持最新版新能源、各类特种车等车牌号规则效验
private static final Pattern pattern = Pattern.compile("^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[a-zA-Z](([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼ABCDEFGHJK]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[ABCDEFGHJK]))|[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z0-9]{1}[A-Z0-9]{1}[A-Z0-9应]{4,5}[A-Z0-9挂学警港澳领使急]{1})$");
1.通过正则表达式,能过来大量车牌号长度、字符规则不对的数据;例如:民航车牌,在正则表达式中没有进行匹配 ;
2:实际使用中,黑色车牌通常为使领馆、港澳地区车辆,通过正则表达式验证通过后,还需要进行颜色效验;
public class TestUtil {private static final String BLACK_RULE = "使领港澳";private static final Pattern pattern = Pattern.compile("^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[a-zA-Z](([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼ABCDEFGHJK]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[ABCDEFGHJK]))|[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z0-9]{1}[A-Z0-9]{1}[A-Z0-9应]{4,5}[A-Z0-9挂学警港澳领使急]{1})$");private static final Pattern whitePattern = Pattern.compile("^[0-9A-Za-z]{6,8}$");public static boolean isCarNo(String carNo, String color) {//通过号码规则校验,该规则能过滤大量民航、新能源车牌、车牌长度不对的车牌号boolean carNoRule = pattern.matcher(carNo).matches();if (!carNoRule) {return false;}//蓝牌、黄牌长度一定为7位if (StringUtils.equals(color, ColorEnum.blue.name())|| StringUtils.equals(color, ColorEnum.yellow.name())) {return carNo.length() == 7;}//新能源车牌,长度为8位过滤规则if (StringUtils.equals(color, ColorEnum.small_new_energy.name())|| StringUtils.equals(color, ColorEnum.large_new_energy.name())) {return carNo.length() == 8;}//黑牌一定含有使领港澳if (StringUtils.equals(color, ColorEnum.black.name())) {return StringUtils.containsAny(carNo, BLACK_RULE);} else if (StringUtils.containsAny(carNo, BLACK_RULE)) {return false;}//白牌 警或应急结尾 WJ开头 纯字母+数字if (StringUtils.equals(color, ColorEnum.white.name())) {return carNo.endsWith("警") || carNo.startsWith("WJ") || carNo.endsWith("应急") || whitePattern.matcher(carNo).matches();}//其他颜色待补充return true;}public static void main(String[] args) {List<String> licenses = new ArrayList<>();licenses.add("湘JJ16871");licenses.add("粤HD666学");licenses.add("粤ZD677港");licenses.add("粤ZD000澳");licenses.add("沪19674领");licenses.add("258043使");licenses.add("赣A5330警");licenses.add("WJ鄂D4020"); licenses.add("京A33388D");licenses.add("民航1211");licenses.add("冀RR527挂");licenses.add("京X535应急");licenses.add("京X5359应急");licenses.add("皖0619940");licenses.add("吉0759703");licenses.add("民航B0150");licenses.add("LW92110");licenses.add("VAD1137");licenses.add("BAD00ss04");licenses.add("京HAD0057");licenses.add("京BDF9992");licenses.add("京00000V");for (String str : licenses) {System.out.println(str + ": " + isCarNo(str, "green"));}}
这篇关于最新版车牌号正则效验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!