如何在单个正则表达式中匹配葡萄牙语牌照?

时间:2014-08-17 00:46:55

标签: regex

我正在构建一个正则表达式来验证葡萄牙语牌照,但旧版本的格式不同,我想知道是否有可能只用一个正则表达式验证所有可能性?

这些是可能性,其他任何无效(即:00-A0-00):

  • 00-00-AA
  • AA-00-00
  • 00-AA-00

目前,我只有这个工作:

  

([A-Z]){2}-([0-9]){2}-([0-9]){2}

5 个答案:

答案 0 :(得分:3)

这有效:

((?:[A-Z]{2}-\d{2}-\d{2})|(?:\d{2}-[A-Z]{2}-\d{2})|(?:\d{2}-\d{2}-[A-Z]{2}))

Demo

锚点更好(带m标志):

(^(?:[A-Z]{2}-\d{2}-\d{2})|(?:\d{2}-[A-Z]{2}-\d{2})|(?:\d{2}-\d{2}-[A-Z]{2})$)

Demo 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-cirulacaoEnglish 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。