通用车牌正则校验
要编写一个正则表达式来包含所有类型的车牌号,我们需要考虑以下几种常见的车牌类型:
1. 普通汽车车牌(蓝牌/黄牌)
- 规则:1个汉字 + 1个字母 + 5个字母或数字
- 示例:
京A12345、粤B5678X
2. 新能源车牌(绿色车牌)
- 规则:1个汉字 + D/F + 5个字母或数字
- 示例:
沪D12345(纯电动),粤F67890(非纯电动)
3. 电动车车牌
- 规则:电动车车牌格式可能与普通车牌相似,但在一些地区有独特格式,例如 1个汉字 + 1个字母 + 6个数字。
- 示例:
浙A123456
4. 军车、使馆车牌
- 军车:“WJ”开头 + 1位字母 + 5位数字,例如:
WJ京12345 - 使馆车牌:使馆车的车牌格式为:“使”字 + 3位数字 + 1个字母,例如:
使123A
5. 挂车车牌
- 规则:1个汉字 + 1个字母 + 挂 + 4位数字/字母。
- 示例:
粤B挂1234
6. 警车车牌
- 规则:1个汉字 + 1个字母 + 警 + 4位数字。
- 示例:
京A警1234
7. 港澳车牌
- 规则:粤Z + 4个数字或字母(香港车牌),粤Z + 5个字母或数字(澳门车牌)。
- 示例:
粤Z1234港、粤Z56789澳
综合正则表达式
我们可以将这些车牌格式组合成一个综合的正则表达式:
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼港澳]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{5}$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[D|F]{1}[A-HJ-NP-Z0-9]{5}$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}[0-9]{6}$|^WJ[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[0-9]{5}$|^使[0-9]{3}[A-Z]{1}$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}挂[0-9]{4}$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}警[0-9]{4}$|^粤Z[A-HJ-NP-Z0-9]{4,5}(港|澳)?$/
解释:
- 普通汽车车牌(蓝牌/黄牌):
^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼港澳]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{5}$ - 新能源车牌:
^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[D|F]{1}[A-HJ-NP-Z0-9]{5}$ - 电动车车牌:
^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}[0-9]{6}$ - 军车车牌:
^WJ[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[0-9]{5}$ - 使馆车牌:
^使[0-9]{3}[A-Z]{1}$ - 挂车车牌:
^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}挂[0-9]{4}$ - 警车车牌:
^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}警[0-9]{4}$ - 港澳车牌:
^粤Z[A-HJ-NP-Z0-9]{4,5}(港|澳)?$
代码示例:
// 综合车牌号正则表达式
const licensePlateRegex = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼港澳]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4,5}$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[D|F]{1}[A-HJ-NP-Z0-9]{5}$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}[0-9]{6}$|^WJ[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[0-9]{5}$|^使[0-9]{3}[A-Z]{1}$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}挂[0-9]{4}$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}警[0-9]{4}$|^粤Z[A-HJ-NP-Z0-9]{4,5}(港|澳)?$/;function checkLicensePlate(plateNumber) {return licensePlateRegex.test(plateNumber);
}// 测试
console.log(checkLicensePlate('京A12345')); // true(普通汽车)
console.log(checkLicensePlate('沪D12345')); // true(新能源汽车)
console.log(checkLicensePlate('浙A123456')); // true(电动车)
console.log(checkLicensePlate('WJ京12345')); // true(军车)
console.log(checkLicensePlate('使123A')); // true(使馆车)
console.log(checkLicensePlate('粤B挂1234')); // true(挂车)
console.log(checkLicensePlate('京A警1234')); // true(警车)
console.log(checkLicensePlate('粤Z1234港')); // true(香港车牌)
总结:
这个正则表达式可以匹配各种类型的车牌号,包括普通汽车、新能源汽车、电动车、军车、使馆车、挂车、警车以及港澳车牌。如果有新的车牌格式出现,可以根据具体规则对正则进行扩展。
相关文章:
通用车牌正则校验
要编写一个正则表达式来包含所有类型的车牌号,我们需要考虑以下几种常见的车牌类型: 1. 普通汽车车牌(蓝牌/黄牌) 规则:1个汉字 1个字母 5个字母或数字示例:京A12345、粤B5678X 2. 新能源车牌…...
使用 SSH 连接 GitLab 的常见问题及解决方案
使用 SSH 连接 GitLab 的常见问题及解决方案 在使用 SSH 连接到 GitLab 服务器时,可能会遇到类似于以下的错误信息: git192.168.xx.xxx: Permission denied (publickey).这个错误通常表示 SSH 无法验证你的公钥,导致无法访问 GitLab 仓库。…...
泛微E9开发 校验日期型字段是否符合要求
校验日期型字段是否符合要求 1、需求分析及展示效果1.1、需求确认1.2、展示效果 2、实现方法3、扩展知识——js日期相关函数 1、需求分析及展示效果 1.1、需求确认 “填报时间”是一个日期型字段,用户提出需求只能选择每个月的第二个周二,选择其他日期…...
ubuntu安装Vim和net-tools和htop
合并安装,快捷方便 sudo apt update sudo apt install net-tools vim htop在Ubuntu中安装Vim可以通过终端使用以下命令完成: sudo apt update sudo apt install vim这两条命令首先更新了本地的包索引,然后安装了Vim文本编辑器。 安装完成后…...
每天10个js面试题(六)
1、js数组方法? Array.push()此方法是在数组的后面添加新加元素,此方法改变了数组的长度Array.pop()此方法在数组后面删除最后一个元素,并返回数组,此方法改变了数组的长度 Array.shift()此方法在数组后面删除第一个元素…...
AIGC技术的学习 系列二
文章目录 前言一、AIGC是什么?1.1. 基本概念1.2机器学习分类二、 语言模型2.1. 基于统计的语言模型。2.2. 基于神经网络的语言模型。2.3. 基于预训练机制的的语言模型/大语言模型三、读入数据3.1. 不得不说的Transformer3.2. 影响力3.3. 根据人类反馈的强化学习3.4. 生成式AI3…...
惊艳!AI模型DIAMOND可模拟《反恐精英》,单张RTX 3090就能运行
最近,研究人员开发了一种名为 DIAMOND(Diffusion for World Modelling)的 AI 模型,它能够在神经网络中模拟著名的电脑游戏《反恐精英:全球攻势》(CS:GO)。 这个模型在一张 Nvidia RTX3090显卡上运行,能够达到每秒10帧…...
中波长线天线耦合的一个方法
围绕窗外墙外牵了10米的室外天线。 短波,fm都是很简单,一个夹子直接夹在拉杆天线上面,效果已经很好。 今天偶尔听到中波前面大约510khz的地方有个摩尔斯码。是成都附近机场的NDB。这个平时要在楼顶或者很空旷的地方才能收到。音量比较小&am…...
Java基础(6)
深拷贝和浅拷贝区别了解吗?什么是引用拷贝?关于深拷贝和浅拷贝区别,我这里先给结论:浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部…...
[JAVAEE] 线程安全问题
目录 一. 什么是线程安全 二. 线程安全问题产生的原因 三. 线程安全问题的解决 3.1 解决修改操作不是原子性的问题 > 加锁 a. 什么是锁 b. 没有加锁时 c. 加锁时 d. 死锁 e. 避免死锁 3.2 解决内存可见性的问题 > volatile关键字 (易变的, 善变的) a. 不加…...
k8s 集群给用户生成 kubeconfig 文件
在 k8s 集群的 RBAC 里有用到用户、组的概念,但是它又不直接管理这些资源,而是通过外部身份验证机制(Authentication Mechanisms)来管理和定义的,比如证书进行签名时,将其配置为 Subject: O system:master…...
(八)Proteus仿真STM32单片机GPIO驱动数码管
1,参考上篇,将LED点阵屏更换成数码管如下图 2,修改驱动函数,数组seg[14]前10个是0-9数字的编码,后四个是空格,点,横线,下划线 char seg_decode(char num)//数字解码 {const char se…...
Python进阶知识1
Python函数 定义一个函数 1.什么是函数:函数是可以重复执行的语句块,可以重复调用 2.作用:用于封装语句块, 提高代码的重用性。 函数是面向过程编程的最小单位 def 语句 1.作用:用来定义( 创建)函数 2…...
单片机设计|基于STM32实现具有室内定位功能的智能手环的设计
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…...
计算机网络——运输层(可靠传输、超时重传、选择确认、流量控制和拥塞控制、TCP连接和释放)
TCP可靠传输的实现 我们假定数据传输只在一个方向进行,即A发送数据,B给出确认。这样的好处是使讨论限于两个窗口,即发送方A的发送窗口和接收方B的接收窗口。 以字节为单位滑动窗口 发送方构造窗口 窗口前沿和后沿的移动情况 描述发送窗口的状…...
Web安全实践
前言 安全无小事,成败在细节,网络有风险,灾难弹指间。 安全一般情况下看不见,在你周围漂浮着,显现出来后,往往会刻骨铭心。正因为安全看不见,所以往往不受重视,因为感知到的概率真…...
【算法篇】动态规划类(2)——01背包+完全背包(笔记)
目录 一、理论基础 1. 问题类型 2. 01背包问题 3. 完全背包问题 4. 解题步骤 (1)确定dp数组(dp table)以及下标的含义。 (2)确定递推公式。 (3)dp数组如何初始化。 &#x…...
基于SpringBoot的“社区医院管理服务系统”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“社区医院管理服务系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 用户注册界面图 医生界面…...
二进制漏洞利用 | 整数溢出探究
什么是整数溢出? 整数溢出是指当算术运算的结果超出用于存储该结果的数据类型的容量时发生的现象。简单来说,就是当一个数值变得过大(对于有符号整数来说,也可能是过小),无法被正常存储,从而导…...
10种经典的螺栓防松设计
螺栓防松在机械设计中至关重要,不同方式的螺栓防松有哪些特点一起来看一下。 01双螺母 双螺母防松也称对顶螺母防松,当两个对顶螺母拧紧后,两个对顶的螺母之间始终存在相互作用的压力,两螺母中有任何一个要转动都需要克服旋合螺纹…...
数字健康时代的“价值共生“:APP如何用技术重新定义身体数据的意义
一、从"数字佃农"到"价值共创者":健康数据经济的范式转移2024年,全球健康经济规模达到6.8万亿美元,数字健康板块增速领跑全行业。在这场变革中,一个核心命题浮出水面:当我们的身体数据成为驱动AI进…...
Windows安全中心总提示驱动不兼容?手把手教你清理老旧驱动,为内存完整性扫清障碍
Windows驱动深度清理指南:彻底解决内存完整性兼容性问题 每次打开Windows安全中心,那个刺眼的"驱动不兼容"提示总让人心烦?这不仅仅是烦人的弹窗问题,更是系统安全与性能的潜在威胁。作为长期使用Windows的资深用户&…...
用ESP32和2.13寸墨水屏,我把汉朔电子价签改造成了桌面网络时钟(附完整代码)
用ESP32和2.13寸墨水屏打造极简网络时钟:从电子价签到桌面艺术 在智能硬件爱好者的世界里,总有一些被遗忘的电子元件等待重生。汉朔电子价签的2.13寸墨水屏就是这样一个被低估的宝藏——它低功耗、高对比度的特性,配合ESP32的强大无线功能&am…...
如何用HIS开源项目解决医院信息化难题:从单体到微服务的实战指南
如何用HIS开源项目解决医院信息化难题:从单体到微服务的实战指南 【免费下载链接】HIS ZainZhao/HIS: HIS 通常代表医疗信息系统(Hospital Information System),但此链接指向的具体项目信息未知,可能是某个开发者设计或…...
游戏外挂开发实战:用C#和Cheat Engine读取内存实现自动补血(附完整代码)
游戏内存数据解析与自动化操作的技术实现 在数字娱乐领域,游戏开发与逆向工程一直是两个相互促进的技术方向。了解游戏内部数据结构和运行机制,不仅有助于开发者优化产品,也能帮助技术爱好者深入理解计算机系统的工作原理。本文将探讨一种通过…...
Python实战:用SLSQP算法搞定6个数据点的非线性拟合(附完整代码)
Python实战:SLSQP算法在小样本非线性拟合中的卓越表现 当面对仅有六个数据点的非线性拟合难题时,传统梯度下降方法往往捉襟见肘。本文将带您深入探索SLSQP算法如何在这种具有挑战性的场景中展现出独特优势,通过完整代码示例和误差对比分析&am…...
OpenPose vs MediaPipe:人体姿态估计工具选型指南
OpenPose与MediaPipe:人体姿态估计技术选型实战指南 1. 技术选型的核心考量维度 在计算机视觉领域,人体姿态估计技术已经发展出多种解决方案,其中OpenPose和MediaPipe作为两大主流框架,各有其技术特点和适用场景。对于技术决策者…...
终极指南:如何测试Binwalk自定义提取器:从单元测试到集成测试的完整方案
终极指南:如何测试Binwalk自定义提取器:从单元测试到集成测试的完整方案 【免费下载链接】binwalk Firmware Analysis Tool 项目地址: https://gitcode.com/gh_mirrors/bi/binwalk Binwalk 是一款强大的固件分析工具,专门用于识别和提…...
【Zynq 进阶三】榨干带宽!深度解析 Linux 下 AXI DMA 高速数据搬运与 Cache 一致性实战
【Zynq 进阶三】榨干带宽!深度解析 Linux 下 AXI DMA 高速数据搬运与 Cache 一致性实战 文章目录【Zynq 进阶三】榨干带宽!深度解析 Linux 下 AXI DMA 高速数据搬运与 Cache 一致性实战📝 前言:为什么 UIO 搞不定海量数据…...
mPLUG-Owl3-2B Streamlit交互指南:支持拖拽上传、缩略图预览、错误堆栈定位
mPLUG-Owl3-2B Streamlit交互指南:支持拖拽上传、缩略图预览、错误堆栈定位 🦉 多模态AI本地化交互新体验 基于mPLUG-Owl3-2B多模态模型开发的本地图文交互工具,针对模型原生调用的各类报错做了全面修复,适配消费级GPU轻量化推理。…...
