汽车车牌正则表达式验证,含新能源车牌(适用全国)

正则验证
直接上代码

// 正则验证车牌,验证通过返回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。
----------------------------------------------------------

/**
     * 第一:普通汽车
     * 车牌号格式:汉字 + A-Z + 5位A-Z或0-9(  车牌号不存在字母I和O防止和1、0混淆)
     * (只包括了普通车牌号,教练车,警等车牌号 。部分部队车,新能源不包括在内)
     * 京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼军空海北沈兰济南广成使领
     * 普通汽车规则:"[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领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

  https://blog.csdn.net/xjun0812/article/details/81806118

正则表达式语法参考链接:http://www.runoob.com/regexp/regexp-syntax.html

写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,文章可以转载,无需版权。希望尽自己的努力,做到更好,大家一起努力进步!

如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!

给自己的梦想添加一双翅膀,让它可以在天空中自由自在的飞翔!

猜你喜欢

转载自www.cnblogs.com/summary-2017/p/10555974.html