通用车牌正则校验

要编写一个正则表达式来包含所有类型的车牌号,我们需要考虑以下几种常见的车牌类型:

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. 普通汽车车牌(蓝牌/黄牌):^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼港澳]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{5}$
  2. 新能源车牌^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[D|F]{1}[A-HJ-NP-Z0-9]{5}$
  3. 电动车车牌^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}[0-9]{6}$
  4. 军车车牌^WJ[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[0-9]{5}$
  5. 使馆车牌^使[0-9]{3}[A-Z]{1}$
  6. 挂车车牌^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}挂[0-9]{4}$
  7. 警车车牌^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵青藏川宁琼]{1}[A-Z]{1}警[0-9]{4}$
  8. 港澳车牌^粤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(香港车牌)

总结:

这个正则表达式可以匹配各种类型的车牌号,包括普通汽车、新能源汽车、电动车、军车、使馆车、挂车、警车以及港澳车牌。如果有新的车牌格式出现,可以根据具体规则对正则进行扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值