正则表达式匹配车牌号 正则匹配车牌 车牌正则匹配
在网上查到的资料大多是跟下文一样
https://blog.csdn.net/xuaner8786/article/details/108239686
文中有部分表述有误,如下:
根据国标GA36-2017 5.9.3 6位序列
修改正确后的表述如下:
组成:省份简称(1位汉字)+发牌机关代号(1位字母)+序号(6位),总计8个字符,序号不能出现字母I和字母O * 通用规则:不区分大小写,第一位:省份简称(1位汉字),第二位:发牌机关代号(1位字母) * 序号位: * 小型车,第一位:只能用字母D或字母F,第二位:字母或者数字,后四位:必须使用数字 * ---([A-K][A-HJ-NP-Z0-9][0-9]{4}) * 大型车,前五位:必须使用数字,第六位:只能用字母A-HJ-K。 * ----([0-9]{5}[A-HJ-K])
得出的通用正则表达式如下
(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-Z](([0-9]{5}[A-HJK])|([A-HJK]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))
JAVA使用如下:
String str = "粤AA123456"; String pattern = "(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-Z](([0-9]{5}[A-HJK])|([A-HJK]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(str); System.out.println(m.matches());