最新版车牌号正则效验

支持最新版新能源、各类特种车等车牌号规则效验

  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"));
    }
  }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在提供的引用中,有两个关于车牌号正则表达式的信息。引用是一个JavaScript函数,用于验证车牌号的格式。该函数使用一个正则表达式来检查车牌号是否符合规定。正则表达式是:/(^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$)/。这个正则表达式的含义是车牌号的第一位是省份缩写,第二位是大写字母,接下来是四位数字或大写字母,最后一位是数字或特殊字符。如果车牌号不符合这个格式,函数会返回false。 引用提供了另一个JavaScript函数,用于验证车牌号的格式。这个函数根据车牌号的长度进行判断,如果是7位,则使用正则表达式ryc.test(value)进行验证,如果是8位,则使用正则表达式xny.test(value)进行验证。具体的正则表达式可以在引用中找到。 根据提供的引用,您可以选择其中一个正则表达式来验证车牌号的格式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [js验证车牌号正则](https://blog.csdn.net/weixin_42489436/article/details/108638663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [车牌号JS正则](https://blog.csdn.net/qq_21473443/article/details/129614890)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [用户名、密码等15个常用的js正则表达式](https://download.csdn.net/download/weixin_38607864/13672366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值