1

我需要正则表达式来匹配来自多个组的字符串构建(A 是任何字母,9 是任何数字):

第 1 组正则表达式 [AZ]{1,2}[0-9]?

A
A9
AA9

第 2 组正则表达式 [AZ]{1,3}[0-9]?

A
AA
AAA
AAA9

第 3 组正则表达式 [AZ]{2,3}[0-9]?[AZ]?

AAA
AA9
AA9A

第 4 组正则表达式 [0-9]{1,2}[AZ]{1,2}[0-9]?

9A
9AA
9A9
99A9

不是每个组都必须在场,但必须按正确的顺序排列 - 我的意思是(数字是组号):

1
12
123
1234

因此,如果存在第 3 组,那么我之前的所有组也必须存在。

由于有四组(可以更多),所以选择像

^[A-Z]{1,2}[0-9]{1}|[A-Z]{1,2}[0-9]{1}\s{1}[A-Z]{1}[0-9]?$

不是最佳选择,因为它会很复杂且难以维护。有没有团体或其他东西的解决方案?组的顺序很重要。

4

2 回答 2

1

此正则表达式将匹配您提供的所有字符串:

^[A-Z]+[0-9]*(\s+[A-Z]+[0-9]*)+$

和无限的话。

于 2013-10-22T09:26:20.243 回答
0

怎么样:

^[A-Z]{1,2}[0-9]?(?:\s+[A-Z]{1,3}[0-9]?(?:\s+[A-Z]{2,3}[0-9]?[A-Z]?(?:\s+[0-9]{1,2}[A-Z]{1,2}[0-9]?)?)?)?$
于 2013-10-22T09:53:29.733 回答