1. 程式人生 > >車牌號校驗正則表示式

車牌號校驗正則表示式

一、車牌號校驗規則

1.常規車牌號:僅允許以漢字開頭,後面可錄入六個字元,由大寫英文字母和阿拉伯數字組成。如:粵B12345。

2.武警車牌:允許前兩位為大寫英文字母,後面可錄入五個或六個字元,由大寫英文字母和阿拉伯數字組成,其中第三位可錄漢字也可錄大寫英文字母及阿拉伯數字,第三位也可空,如:WJ警00081、WJ京1234J、WJ1234X。

3.最後一個為漢字的車牌:允許以漢字開頭,後面可錄入六個字元,前五位字元,由大寫英文字母和阿拉伯數字組成,而最後一個字元為漢字,漢字包括“掛”、“學”、“警”、“軍”、“港”、“澳”。如:粵Z1234港。

4.新軍車牌:以兩位為大寫英文字母開頭,後面以5位阿拉伯數字組成。如:BA12345。

二、正則表示式

^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$

三、使用示例

1. Oracle PL/SQL

create or replace  function is_vehicle_number(p_vehicle_number in varchar2) return number
  is
    v_result number;
    v_express varchar2(600);
  begin
    -- 預設0,表示不正確
    v_result := 0;
    
    if length(p_vehicle_number) = 7 then
      v_express := '^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$';
    
      if regexp_like(p_vehicle_number, v_express) then      
        v_result := 1;
      end if;
    end if;
    
    return v_result;
  end;

2. Javascript

function isVehicleNumber(vehicleNumber) {
      var result = false;
      if (vehicleNumber.length == 7){
        var express = /^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$/;
        result = express.test(vehicleNumber);
      }
      return result;
  }

3.C#

public static bool IsVehicleNumber(string vehicleNumber)
{
    bool result = false;
    if (vehicleNumber.Length == 7){
      string express = @"^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$";
      result = Regex.IsMatch(vehicleNumber, express);
    }
    return result;
}

4.Mysql

SELECT name FROM person_tbl WHERE name REGEXP '^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$';

5.python3

import re
pattern = re.compile(r'^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$', re.I)   # re.I 表示忽略大小寫
m = pattern.match('粵B12345')
m

參考文件:

https://segmentfault.com/a/1190000012427912

https://blog.csdn.net/xjun0812/article/details/81806118