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