汽车车牌正则表达式验证,含新能源车牌(适⽤全国)
正则验证
直接上代码
// 正则验证车牌,验证通过返回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}))"
js正则表达式验证数字和字母*
* 总规则:"([京津沪渝冀豫云辽⿊湘皖鲁新苏浙赣鄂桂⽢晋蒙陕吉闽贵粤青藏川宁琼使领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-********,010-******** 国家代码选填;⼿机:+86-10-135********,  +86-135******** ,10-135******** ,135******** 国家代码和区号选填
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-********  010-*******  ,以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这五个数字中的⼀个的3.  | 分隔符
| 分隔符表⽰ “或” ,在固话格式和⼿机号格式中选择⼀个格式匹配成功即可返回true。
^代表开始, $代表终⽌。
引⽤链接地址:
引⽤原⽂链接:
正则表达式语法参考链接:
全国发动机型号编制规则⼤全:
车架号校验算法:
车架号详解:
写博客是为了记住⾃⼰容易忘记的东西,另外也是对⾃⼰⼯作的总结,⽂章可以转载,⽆需版权。希望尽⾃⼰的努⼒,做到更好,⼤家⼀起努⼒进步!如果有什么问题,欢迎⼤家⼀起探讨,代码如有问题,欢迎各位⼤神指正!