在使用c++11 regex验证车牌号前,要首先明白有几个坑要踩:
1.车牌号校验规则,只有弄清楚了校验车牌号的规则才能写出正确的正则表达式,所以首先要弄清楚车牌号的校验规则。
2.c++11 中regex的用法,其中用到了regex、 regex_match,其中有个坑就是中文的匹配。
一、车牌号校验规则
1.普通常见车牌(蓝牌、黄牌)
车牌号码的长度:7位 , 第一位是省份简称, 第二位是发证机关代码,第二位到第七位是大写英文字符和阿拉伯数字组成。例如:京A88888


2.最后一位为汉字的车牌。
车牌号码的长度:7位 , 第一位是省份简称, 第二位是发证机关代码,第二位到第六位是大写英文字符和阿拉伯数字组成。最后一个字符为汉字,汉字包括“挂”、“学”、“警”、“港”、“澳”。比如:鲁A8888学

3.新军车牌
以两位为大写英文字母开头,后面以5位阿拉伯数字组成。如:KA12345。

4.新能源车牌
车牌号码的长度:8位 , 第一位是省份简称, 第二位是发证机关代码,按照现行新能源车牌号码规则:
第三位:1-9DF;
第四位:1-9A-Z,无I、O字母;
第五-七位:0-9;
第八位:1-9DF;

关于第1、2、3种车牌:
省份简称:京津晋冀蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新
发证机关代码:ABCDEFGHJKLMNPQRSTUVWXY (无 I, O , Z 三个字母。其中O和Z属于特殊车牌类型)
车牌号码:
数字:0123456789
字母:ABCDEFGHJKLNMxPQRSTUVWXYZ (说明:无 I, O 字母;)
所以1、2、3种车牌匹配的正则表达式如下:
^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[ABCDEFGHJKLMNPQRSTUVWXY]{1}[ABCDEFGHJKLNMxPQRSTUVWXYZ 0-9]{4}[ABCDEFGHJKLNMxPQRSTUVWXYZ 0-9挂学警港澳]{1}$
关于新能源车牌:
车牌匹配正则表达式如下:
^[京津晋冀蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新][ABCDEFGHJKLMNPQRSTUVWXY][1-9DF][1-9ABCDEFGHJKLMNPQRSTUVWXYZ]\d{3}[1-9DF]$
二、c++11 regex介绍
C++11 为我们提供了正则表达式库regex,头文件#include <regex>
std::regex_match是全文匹配,即输入的字符串要和正则表达式全部匹配,才认为匹配成功返回true,否则匹配失败返回

本文详细介绍了如何使用C++11 regex进行车牌号验证,包括不同类型的车牌规则,如普通车牌、带汉字车牌和新能源车牌,以及在处理中文字符时的注意事项。提供示例代码和正则表达式实例,助您避免验证车牌号过程中的常见问题。
最低0.47元/天 解锁文章
3600





