我正在构建一个正则表达式来验证葡萄牙语牌照,但旧版本的格式不同,我想知道是否有可能只用一个正则表达式验证所有可能性?
这些是可能性,其他任何无效(即:00-A0-00):
目前,我只有这个工作:
([A-Z]){2}-([0-9]){2}-([0-9]){2}
答案 0 :(得分:3)
这有效:
((?:[A-Z]{2}-\d{2}-\d{2})|(?:\d{2}-[A-Z]{2}-\d{2})|(?:\d{2}-\d{2}-[A-Z]{2}))
锚点更好(带m
标志):
(^(?:[A-Z]{2}-\d{2}-\d{2})|(?:\d{2}-[A-Z]{2}-\d{2})|(?:\d{2}-\d{2}-[A-Z]{2})$)
答案 1 :(得分:2)
嗯,你可以随时或其中的3个
([A-Z]){2}-(\d){2}-(\d){2}|(\d){2}-([A-Z]){2}-(\d){2}|(\d){2}-(\d){2}-([A-Z]){2}
答案 2 :(得分:1)
根据您的正则表达式引擎,您可能需要改变一些事情,但一般来说,最简单的方法是简单地提供三个替换。例如:
\d{2}-\d{2}-[[:alpha:]]{2}|[[:alpha:]]{2}\d{2}-\d{2}|\d{2}-[[:alpha:]]{2}-\d{2}
对于我的样本输入,这对我来说很好。 YMMV。
答案 3 :(得分:1)
现在我们在葡萄牙有了新的组合AA-00-AA https://www.razaoautomovel.com/2020/03/novas-matriculas-em-cirulacao(English google translated)(从2020年3月2日开始,您可以看到official law)
现在使用dawg答案是
(^(?:[A-Z]{2}-\d{2}-\d{2})|(?:\d{2}-[A-Z]{2}-\d{2})|(?:\d{2}-\d{2}-[A-Z]{2})|(?:[A-Z]{2}-\d{2}-[A-Z]{2})$)
答案 4 :(得分:0)
为葡萄牙的外交车牌创建另一个 REGEX 并测试 2 个条件或更改上面的 Regex 以考虑此车牌是否更容易。这是X代表数字而其他是固定字母的格式。 XXX-CDXXX 和 XXX-FMXXX。