我正在尝试使用REGEX匹配数据库中的车号牌,以便为它们设置类型,因此以后在任何查询中都不必使用REGEX。

我有两个匹配无日期/爱尔兰板的表达式。我需要将爱尔兰版和无日期版分开。

爱尔兰板块必须包含字母I或Z,无日期板块不能包含I或Z。

这是两个同时满足dateless和irish的表达式。

REGEXP '^[A-Z]{1,3}[0-9]{1,4}$'
REGEXP '^[0-9]{1,4}[A-Z]{1,3}$'


我遇到的问题是排除I-Z,我可以执行[A-HJ-Y],但这会导致交叉。

如何修改上面的表达式以要求I和Z,然后再修改另一组表达式以排除I和Z。

非常感谢

最佳答案

爱尔兰的盘子是:


^([IZ][A-Z]{0,2}|[A-Z]([IZ][A-Z]?|[A-Z][IZ]))[0-9]{1,4}$
^[0-9]{1,4}([IZ][A-Z]{0,2}|[A-Z]([IZ][A-Z]?|[A-Z][IZ]))$


如果您准备接受最多5个字母,可以将其简化为:


^[A-Z]{0,2}[IZ][A-Z]{0,2}[0-9]{1,4}$
^[0-9]{1,4}[A-Z]{0,2}[IZ][A-Z]{0,2}$


无日期的盘子是:


^[A-HJ-Y]{1,3}[0-9]{1,4}$
^[0-9]{1,4}[A-HJ-Y]{1,3}$

07-25 23:24