1.python 校验车牌是否合规
import re
pattern_str = "([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]" \
"{1}(([A-HJ-Z]{1}[A-HJ-NP-Z0-9]{5})|([A-HJ-Z]{1}(([DF]{1}[A-HJ-NP-Z0-9]{1}[0-9]{4})|([0-9]{5}[DF]" \
"{1})))|([A-HJ-Z]{1}[A-D0-9]{1}[0-9]{3}警)))|([0-9]{6}使)|((([沪粤川云桂鄂陕蒙藏黑辽渝]{1}A)|鲁B|闽D|蒙E|蒙H)" \
"[0-9]{4}领)|(WJ[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼·•]{1}[0-9]{4}[TDSHBXJ0-9]{1})" \
"|([VKHBSLJNGCE]{1}[A-DJ-PR-TVY]{1}[0-9]{5})"
string_str = '鄂A8N95A'
# 校验车牌
def is_car_number(pattern, string):
if re.findall(pattern, string):
return True
else:
return False
if __name__ == '__main__':
print(is_car_number(pattern_str, string_str))
# 最后输出为 True
2.车牌校验规则
常规车牌号:省份+地区代码+五位数字/大写英文字母(序号位)如:粤B12345。
- 序号位不存在字母I和O防止1、0混淆
- 省份范围:京、津、沪、渝、冀、豫、云、辽、黑、湘、皖、鲁、新、苏、浙、赣、鄂、桂、甘、晋、蒙、陕、吉、闽、贵、粤、青、藏、川、宁、琼。
- 地区代码O为省级公安厅专用车牌
- 地区代码U为省级政府专用车牌
- 地区代码中暂无I
新能源车牌号:省份简称(1位汉字)+发牌机关代号(1位字母)+序号(6位)
- 小型新能源汽车号牌(序号)的第一位必须使用字母D、F(D代表纯电动新能源汽车,F代表非纯电动新能源汽车),第二位可以使用字母或者数字,后四位必须使用数字。
- 大型新能源汽车号牌(序号)的第六位必须使用字母D、F(D代表纯电动新能源汽车,F代表非纯电动新能源汽车),前五位必须使用数字。
- 序号中英文字母I和O不能使用。
- 省份范围同常规车牌号
- 发牌机关代码暂无I
警车车牌:车牌最后汉字为警字
- 省份+地区代码+4位数字+警(川A0001警)
- 省份+地区代码+字母+3位数字(川AA001警)字母可选项包括(A、B、C、D)
- 省份范围同常规车牌号
- 地区代码没有I
- 地区代码为O时代表为省级公安厅专用车牌
领事馆车牌:车牌中包括“使”或“领”字
- 大使馆:三位国家代码(数字)+三位车辆编号(数字)+使
- 领事馆:省份简称+地区代码+四位车辆编号(数字)+领(省份与地区代码可选范围包括:沪A、粤A、川A、云A、桂A、鄂A、闽D、鲁B、陕A、蒙A、蒙E、蒙H、藏A、黑A、辽A、渝A)
武警车牌:车牌开头包括WJ
- 武警总部车牌:WJ+•(中间点)+四个数字+数字或字母
- 武警地方车牌:WJ+省份简称+四位数字+数字或字母
- 省份范围同常规车牌号
- 其中字母包括(T D S H B X J)
军用车牌:字头+字头号 +序号组成。
- 字头:大写字母汉语拼音字母,字母包括(VKHBSLJNGCE)
- 字头号:大写英文字母,字母包括(A-D,J-P,R-T,V,Y)
- 序号:5位数字