is_car_no.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import re
  2. # 车牌验证
  3. def is_car_no(car_no):
  4. if not car_no:
  5. return False
  6. # 匹配民用车牌和使馆车牌
  7. # 判断标准
  8. # 1,第一位为汉字省份缩写
  9. # 2,第二位为大写字母城市编码
  10. # 3,后面是5位仅含字母和数字的组合
  11. regular = u'^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新使]{1}[A-Za-z]{1}[0-9a-zA-Z]{5}$'
  12. pattern = re.compile(regular)
  13. if pattern.match(car_no):
  14. return True
  15. # 新能源
  16. regular = u'^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新使]{1}[A-Za-z]{1}[0-9a-zA-Z]{6}$'
  17. pattern = re.compile(regular)
  18. if pattern.match(car_no):
  19. return True
  20. # 匹配特种车牌(挂,警,学,领,港,澳)
  21. # 参考 https://wenku.baidu.com/view/4573909a964bcf84b9d57bc5.html
  22. regular = u'^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Za-z]{1}[0-9a-zA-Z]{4}[挂警学领港澳]{1}$'
  23. pattern = re.compile(regular)
  24. if pattern.match(car_no):
  25. return True
  26. # 匹配武警车牌
  27. # 参考 https://wenku.baidu.com/view/7fe0b333aaea998fcc220e48.html
  28. regular = u'^WJ[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]?[0-9a-zA-Z]{5}$'
  29. pattern = re.compile(regular)
  30. if pattern.match(car_no):
  31. return True
  32. # 匹配军牌
  33. # 参考 http://auto.sina.com.cn/service/2013-05-03/18111149551.shtml
  34. regular = u'^[A-Za-z]{2}[0-9]{5}$'
  35. pattern = re.compile(regular)
  36. if pattern.match(car_no):
  37. return True
  38. return False