c++11 regex 正则表达式验证车牌号

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

在使用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类

    该类型是有一个代表正则表达式的字符串和一个文法选项作为输入,当文法选项不指定时默认为ECMAScript

  • std::regex_match匹配函数

​ std::regex_match是全文匹配,即输入的字符串要和正则表达式全部匹配,才认为匹配成功返回true,否则匹配失败返回

评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村北头的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值