如何编写可验证德国车牌的完整正则表达式?
德国车牌验证正则表达式优化需求
摘要
德国车牌规则复杂,现寻求一套尽可能完整的验证正则表达式。
我查阅了多个资料来源,寻找可验证德国车牌的“完整”正则表达式,找到了多个候选方案,但均存在一定缺陷。
候选方案A
此前的Stack Overflow问题中的正确答案为:
^[a-zA-Z]{1,3}-[a-zA-Z]{1,2} \d{1,4}$
候选方案B
在etl-tools网站上常见的正则表达式:
^[A-ZÄÖÜ]{1,3}\-[ ]{0,1}[A-Z]{0,2}[0-9]{1,4}[H]{0,1}
该方案虽更优,但仍存在问题且已过时(末尾缺少可选的E标识)
整理出的验证要求
- 第一组(地区代码)
- 1-3个大写字母,包含ÄÖÜ,但不含ß
- 或外交官使用的数字0
- 需符合官方允许的配置清单
- 使用连字符替代车牌上的分隔标识
- 第二组(字母)
- 仅包含A-Z
- 普通车牌为1-2个字母
- 特殊车牌(如公务车牌)为0-2个字母
- 第三组(数字)
- 包含数字0-9
- 1-4个数字
- 不能以0开头
- 第四组(特殊车牌标识)
- 可选
E(电动车)或H(老爷车)
- 可选
- 部分资料指出,总长度仅为8个字符(未明确是否包含第4组)
我提出的方案
^([A-Z0ÄÖÜ]{1,3})-([A-Z]{0,2})([1-9][0-9]{0,3})([HE]?)$
该方案的不足
- 未验证总长度
- 不支持部分警用格式:
- BW 6-1234
- 不支持部分联邦格式:
- BD 15-1234
- 可能存在更多问题,欢迎补充并帮助完善该正则表达式
内容的提问来源于stack exchange,提问作者Jocy Wolff
相关产品推荐
相关产品推荐

