如何构建REGEX模式以验证输入字段

时间:2016-11-08 15:45:43

标签: regex

我有一个输入搜索字段,我需要用Regex编辑,我很可怕。该字段可以是1到6个字符。前三个字符(如果提供)必须是大写字母,后三个必须是数字。所以我的模式是[A-Z]{3}[0-9]{3},它似乎适用于所有6个字符。踢球者在任何时候用户都可以用星号结束字符串。所以" ABC123"很好。所以" AB *"或" ABC1 *"。 " AB1 *"是一个错误。并且星号本身也是不允许的。

我尝试了[A-Z*]{1-3}[0-9*]{0,3},但这允许" A **"和" AB1"。

我需要做什么?

1 个答案:

答案 0 :(得分:4)

最直接的方法是描述所有可能的字符串,作为这些子模式的替代:

  • [A-Z]\*
  • [A-Z]{2}\*
  • [A-Z]{3}\*
  • [A-Z]{3}[0-9]\*
  • [A-Z]{3}[0-9]{2}\*
  • [A-Z]{3}[0-9]{3}

通过简单的因子分解,您可以将其减少为这些子模式:

  • [A-Z]{1,3}\*
  • [A-Z]{3}[0-9]{1,2}\*
  • [A-Z]{3}[0-9]{3}

这为我们提供了最终结果:[A-Z]{1,3}\*|[A-Z]{3}[0-9]{1,2}\*|[A-Z]{3}[0-9]{3}