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

正则验证
直接上代码

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

 

正则表达式(国际固话和手机号码)

regexp= "^(((\\+\\d{2}-)?0\\d{2,3}-\\d{7,8})|((\\+\\d{2}-)?(\\d{2,3}-)?([1][3,4,5,7,8][0-9]\\d{8})))$"
支持格式示例-固话:+86-010-40020020,010-40020020 国家代码选填;手机:+86-10-13523458056,  +86-13523458056 ,10-13523458056 ,13523458056 国家代码和区号选填

1.固话

regexp= "^(\\+\\d{2}-)?0\\d{2,3}-\\d{7,8}$"
    代表国际固定电话。
(\\d{2}-)?
    \\d{2} 代表匹配任意两个数字,- 是分隔符, ?代表匹配前面的子表达式零次或者一次,或指明一个非贪婪限定符,要匹配?字符,请使用\?,(\\d{2}-)? 代表 匹配前两个数字,允许匹配不上。在这里面用于匹配国家代码  比如 86-

(\\+\\d{2}-)?
    代表示例:+86-   没有分隔符的话,就是(\\d{2})?
0\\d{2,3}-\\d{7,8}
    代表示例:010-12345678   010-1234567  ,以0开头,后面任意两位或者三位数字 比如区号0534, 接着分隔符-,然后为任意7位或者8位数字。

 

2.手机号

regexp= "^(\\+\\d{2}-)?(\\d{2,3}-)?([1][3,4,5,7,8][0-9]\\d{8})$"
    代表手机号,+ 之后为任意两位数字 ,?代表?前的括号内的表达式可选,允许匹配一次或者零次,分隔符-,接着任意匹配两位或者三位数字,即手机号的区号,允许匹配一次或者零次,即区号可填可不填,分隔符 - ,接着手机号格式。

([1][3,4,5,7,8][0-9]\\d{8})
    手机号格式:开头必须为数字1,第二位分别为34578这五个数字中的一个,[0-9]其实等同于\\d,表示的是0到9的任意数字,其实该手机格式也可以写成    ([1][3,4,5,7,8]\\d{9})  表示的是开头必须为数字1,第二位分别为34578这五个数字中的一个的11位的数字。

3.  | 分隔符

    | 分隔符 表示 “或” , 在固话 格式  和  手机号 格式  中选择 一个格式 匹配成功即可 返回 true^代表开始, $代表终止。
引用链接地址:https://blog.csdn.net/wmx690/article/details/80354321

 

 

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

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

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

全国发动机型号编制规则大全:http://auto.sina.com.cn/j_kandian.d.html?docid=fypapmz5170586&subch=nauto

车架号校验算法:https://blog.csdn.net/huanxue517/article/details/51881587 https://blog.csdn.net/tutb12345/article/details/61415148

 车架号详解:https://blog.csdn.net/shenhonglei1234/article/details/53103161

 

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

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

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

转载于:https://www.cnblogs.com/summary-2017/p/10555974.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值