需要[A-Z]集中的字母

时间:2013-04-25 12:46:18

标签: mysql regex

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

我有两个与无日龄/爱尔兰板块相匹配的表情。我需要将爱尔兰板块与无日历板块分开。

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

这两个表达式都与无日历和爱尔兰语相匹配。

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.

非常感谢

1 个答案:

答案 0 :(得分:1)

爱尔兰板块要么:

  • ^([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}$