车牌验证规则
1、传统车牌
第1位为省份简称(汉字),第二位为发牌机关代号(A-Z的字母)第3到第7位为序号(由字母或数字组成,但不存在字母I和O,防止和数字1、0混淆,另外最后一位可能是“挂学警港澳使领”中的一个汉字)。
2、新能源车牌
第1位和第2位与传统车牌一致,第3到第8位为序号(比传统车牌多一位)。新能源车牌的序号规则如下:
小型车:第1位只能是字母D或F,第2为可以是数字或字母,第3到6位必须是数字。
大型车:第1位到第5位必须是数字,第6位只能是字母D或F。
测试样例
之前在网上也找过别人写的正则验证,都有bug,所以自己写了上面的正则验证。不管你是自己写的验证还是网上找的验证,不妨用下面的车牌进行测试,看是否正确。
正确的车牌:粤A123AB、粤A2222学、粤AF12345、粤A12345D。
错误的车牌:粤A123456、粤A2222i、粤AA12345、粤AD123456。
————————————————
// PHP正则验证车牌,验证通过返回true,不通过返回false
function isLicensePlate($str) {
$pattern = "/^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/u";
$reg = preg_match($pattern, $str);
return $reg;
}
//jS正则
/^[京津晋冀蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新][ABCDEFGHJKLMNPQRSTUVWXY][\dABCDEFGHJKLNMxPQRSTUVWXYZ]{5}$/