正则验证车牌号码,包括新能源车牌

正则验证 20180818

直接上代码

// 正则验证车牌,验证通过返回true,不通过返回false
function isLicensePlate(str) {
return /^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/.test(str);
}

车牌验证规则

1、传统车牌

第 1 位为省份简称(汉字),第二位为发牌机关代号(A-Z 的字母)第 3 到第 7 位为序号(由字母或数字组成,但不存在字母 I 和 O,防止和数字 1、0 混淆,另外最后一位可能是 “挂学警港澳使领” 中的一个汉字)。

2、新能源车牌

第 1 位和第 2 位与传统车牌一致,第 3 到第 8 位为序号(比传统车牌多一位)。新能源车牌的序号规则如下:

小型车:第 1 位只能是字母 D 或 F,第 2 为可以是数字或字母,第 3 到 6 位必须是数字。

大型车:第 1 位到第 5 位必须是数字,第 6 位只能是字母 D 或 F。

测试说明

之前在网上也找过别人写的正则验证,都有 bug,所以自己写了上面的正则验证。不管你是自己写的验证还是网上找的验证,不妨用下面的车牌进行测试,看是否正确。

正确的车牌:川 A123AB、川 A2222 学、川 AF12345、川 A12345D。

错误的车牌:川 A123456、川 A2222i、川 AA12345、川 AD123456。

原文链接:https://blog.csdn.net/xjun0812/article/details/81806118

 

20170814

    /**
     * 第一:普通汽车
     * 车牌号格式:汉字 + A-Z + 5 位 A-Z 或 0-9(车牌号不存在字母 I 和 O 防止和 1、0 混淆)
     * (只包括了普通车牌号,教练车,警等车牌号 。部分部队车,新能源不包括在内)

  1. 常规车牌号:仅允许以汉字开头,后面可录入六个字符,由大写英文字母和阿拉伯数字组成。如:粤 B12345;
  2. 武警车牌:允许前两位为大写英文字母,后面可录入七个字符,由大写英文字母和阿拉伯数字组成,其中第三位可录汉字也可录大写英文字母及阿拉伯数字,如:WJ01 警 0081、WJ0112345。
  3. 最后一个为汉字的车牌:允许以汉字开头,后面可录入六个字符,前五位字符,由大写英文字母和阿拉伯数字组成,而最后一个字符为汉字,汉字包括 “挂”、“学”、“警”、“军”、“港”、“澳”。如:粤 Z1234 港。
  4. 新军车牌:以两位为大写英文字母开头,后面以 5 位阿拉伯数字组成。如:BA12345。
  5. 黑龙江车牌存在 08 或 38 开头的情况


     * 京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼军空海北沈兰济南广成使领
     * 普通汽车规则:"[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9 挂学警港澳]{1}"
     *
     *  第二:新能源车
     * 组成:省份简称(1 位汉字)+ 发牌机关代号(1 位字母)+ 序号(6 位),总计 8 个字符,序号不能出现字母 I 和字母 O
     * 通用规则:不区分大小写,第一位:省份简称(1 位汉字),第二位:发牌机关代号(1 位字母)
     * 序号位:
     * 小型车,第一位:只能用字母 D 或字母 F,第二位:字母或者数字,后四位:必须使用数字
     * ---([DF][A-HJ-NP-Z0-9][0-9]{4})
     * 大型车,前五位:必须使用数字,第六位:只能用字母 D 或字母 F。
     * ----([0-9]{5}[DF])
     * 新能源车规则:"[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}(([0-9]{5}[DF])|([DF][A-HJ-NP-Z0-9][0-9]{4}))"
     *
     * 总规则:"([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}(([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9 挂学警港澳]{1})"

     */

 

 

// 代码中引用此方法即可

    public static boolean isCarnumberNO(String carnumber) {
        String carnumRegex = "([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}(([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9 挂学警港澳]{1})";

        if (TextUtils.isEmpty(carnumber)) return false;
        else return carnumber.matches(carnumRegex);
    }

原文链接:https://blog.csdn.net/tangjili5620/article/details/77159453

posted @ 2018-08-24 14:06  小淘气鬼--弟弟  阅读(3860)  评论(0编辑  收藏  举报